将包含以 ascii 写入的整数的文件转换为整数的二进制文件

将包含以 ascii 写入的整数的文件转换为整数的二进制文件

我有一个文件,其中包含一长串以 ascii 编写的整数,并用换行符分隔,如下所示:

-175
2
-19345
345592
-45
2355

ETC...

我想将此文件转换为包含相同整数的“二进制”文件,写入实际的 4 字节整数。

我可以使用什么命令行工具来实现此目的?

答案1

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

使用本地字节顺序。对于大端,使用l>代替,对于小端,使用 代替。ll<

请参阅perldoc -f pack获取更多信息。

请注意,它是l小写的L(对于长整型),而不是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

答案2

其他perl

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

i表示有符号整数值(至少表示 4 个字节,取决于本地 C 编译器)。使用l像这样的选项@Stéphane Chazelas 的回答始终使用 32 位。

相关内容