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

Bja*_*sen 4 utilities text-processing conversion binary files

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

-175
2
-19345
345592
-45
2355
Run Code Online (Sandbox Code Playgroud)

等等...

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

我可以使用什么命令行工具来实现这一点?

Sté*_*las 5

perl -pe '$_=pack"l",$_' < infile > outfile
Run Code Online (Sandbox Code Playgroud)

使用本地字节序。使用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
Run Code Online (Sandbox Code Playgroud)

  • @Gnouc,是的,从 32 位宽的 long 开始,`l` 是 _long integer_ 的 **词源**。`l` 保持不变,即使在 `long`s 更宽的系统上也保证保持 32 位宽(所以 `l` 在实践中不再意味着 `long`)。如果你想要你的系统/编译器的 `long`s,请使用 `l!` (3认同)