我有一个名为output.log的文件,它有一个空格"的列表,分隔的整数范围为[-20482048]。我正试图用xxd将其转换为二进制文件。我正在使用命令,
xxd -r -p output.log > output.bin
然而,当我用xxd读回文件时,我会丢失所有的符号(-),并收到一些大于2048的值。有更好的方法吗?谢谢
编辑:使用示例数据。。。
$ cat test
4 0 -3 -2 -1 200
$ xxd -r -p test > test.bin
$ xxd test.bin
0000000: 4012 00 @..
也许我误解了xxd在做什么,我希望在最后一个命令之后看到的是我的原始输入数据被显示回来。这不正确吗?
对于更大的数据集,我会看到正确的值不时出现,但输出中仍然存在大量噪声。
输入源文件中可能有一些奇怪的字符,xxd
可以很好地处理数字。尝试使用八进制转储od -c input
查看数据以查找任何奇怪的内容。
$ echo '-3000 -2048 -1 0 1 2048 3000' > foo.input
$ cat foo.input
-3000 -2048 -1 0 1 2048 3000
$ xxd foo.input > foo.hex
$ cat foo.hex
0000000: 2d33 3030 3020 2d32 3034 3820 2d31 2030 -3000 -2048 -1 0
0000010: 2031 2032 3034 3820 3330 3030 0a 1 2048 3000.
$ xxd -r foo.hex > foo.output
$ cat foo.output
-3000 -2048 -1 0 1 2048 3000