Files
將帶有以 ascii 寫入的整數的文件轉換為整數的二進製文件
我有一個文件,其中包含一長串用 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位。