十六进制转储到二进制数据转换

时间:2018-07-17 09:59:59

标签: linux binary microcontroller data-conversion hexdump

需要使用xxd命令(或任何其他有效的方法)将十六进制转储文件转换为二进制数据。原始hexdump是不是用xxd 生成的。 尝试了两种具有不同选项的变体:

xxd -r input.log binout.bin
xxd -r -p input.log binout.bin

这两种方法均产生错误的结果:第一个命令创建的二进制文件大小为2.2GB,第二个命令生成的二进制文件大小为82382字节,两个二进制文件的大小均不匹配,预期的二进制大小为65536字节。

十六进制文件的一部分:

807e0000: 4562 537f  e0b1 6477  84bb 6bae  1cfe 81a0 | EbS...dw..k.....
807e0010: 94f9 082b  5870 4868  198f 45fd  8794 de6c | ...+XpHh..E....l
807e0020: b752 7bf8  23ab 73d3  e272 4b02  57e3 1f8f | .R{.#.s..rK.W...
807e0030: 2a66 55ab  07b2 eb28  032f b5c2  9a86 c57b | *fU....(./.....{
807e0040: a5d3 3708  f230 2887  b223 bfa5  ba02 036a | ..7..0(..#.....j
807e0050: 5ced 1682  2b8a cf1c  92a7 79b4  f0f3 07f2 | \...+.....y.....
807e0060: a14e 69e2  cd65 daf4  d506 05be  1fd1 3462 | .Ni..e........4b

这里可能是什么问题,以及如何正确转换数据?

1 个答案:

答案 0 :(得分:0)

在xxd之后,您需要删除第一部分和最后一部分。

$ for i in $(cat binary.txt) ; do printf "\x$i" ; done > mybinary

binary.txt是xxd之后的文件名。

之后,您可以再次将其转换为二进制。

$ md5sum originbinary 
$ md5sum mybinary

在此之后,如果您具有原始的.bin文件,则可以检查文件的md5sums以查看它们是否具有相同的值。如果它们具有相同的值,则转换成功完成。

{{1}}

您可以在此链接的第一部分中介绍更多详细信息。 https://acassis.wordpress.com/2012/10/21/how-to-transfer-files-to-a-linux-embedded-system-over-serial/