Files

將帶有以 ascii 寫入的整數的文件轉換為整數的二進製文件

  • August 8, 2014

我有一個文件,其中包含一長串用 ascii 編寫的整數,用換行符分隔,如下所示:

-175
2
-19345
345592
-45
2355

ETC…

我想將此文件轉換為包含相同整數的“二進制”文件,寫為實際的 4 字節整數。

我可以使用什麼命令行工具來實現這一點?

perl -pe '$_=pack"l",$_' < infile > outfile

使用本地字節序。使用l>代替l大端和l<小端。

有關perldoc -f pack更多資訊,請參閱。

請注意,它是l小寫的L(對於long integer),而不是1數字。

$ printf '%s\n' 1234 -2 | perl -pe '$_=pack"l",$_'| od -vtd4
0000000        1234          -2
0000010
$ printf '%s\n' 1234 -2 | perl -pe '$_=pack"l>",$_'| od -vtx1
0000000 00 00 04 d2 ff ff ff fe
0000010

另一個perl

$ perl -pe '$_ = pack("i", $_)' file

i表示有符號整數值(表示至少 4 個字節,取決於本地 C 編譯器)。使用l@Stéphane Chazelas’s answer這樣的選項總是使用32位。

引用自:https://unix.stackexchange.com/questions/149187