将(.hex?)文件转换为可视图像

时间:2013-07-31 05:29:57

标签: image hex jpeg

我最近获得了一个文本文件,并告诉它可以转换为图像。文本文件看起来像这样......

0000000 d8ff e0ff 1000 464a 4649 0100 0001 0100
0000010 0100 0000 e2ff a80c 4349 5f43 5250 464f
0000020 4c49 0045 0101 0000 980c 7061 6c70 1002
...
000d320 8b4c 1b28 3bd4 0016 91e0 799e 34c1 4457
000d330 7113 ee4d cd73 4945 63db d9ff          
000d33c

从谷歌搜索,我很确定这是一个.hex文件(虽然我在网上看到的很多十六进制文件都有不同的格式,所以我不确定。)

当我搜索“将十六进制转换为图像”时,像我一样格式化的结果真的很干。

是否有人确定这是什么类型的文件以及如何将其转换回可查看的图像?

由于

1 个答案:

答案 0 :(得分:1)

这看起来像一个jpeg文件,以.hex文件编码。

我不习惯使用hex个文件,但7个第一个数字看起来基本上是在计算行数。我会忽略它们,我相信你可以找到关于角色究竟是什么的文档(如果有的话)。实际数据字节是在每行的其余部分中编码的。

前一段时间,我写了lightweight jpeg encoder。我进入源代码,看看我在文件中看到的字节是否响了一个铃声:

文件以d8ff开头,我为编码jpeg编写的代码,通过编写将其标识为jpeg的文件头开始,并编码有关它的信息(例如其大小),首先写入字节FFDB(请参阅this line,其中“SOI”代表“文件开头”。)

然后我们有e0ff 1000 464a 4649 0100 0001 ...我的代码写道:FFE0 0010 4A46 4946 0001 0100(请参阅line 127 and following),这是标准JPEG文件的下一个字节JFIF header

最后,文件的最后3个字节为d9ffjpecFFD9写为文件结束字节。

显然,你的文件没有和我的代码一样编写的字节序(实际上看起来好像是middle-endian,我之前没有真正看到过......),但你可以看到每个数据包当反转这两个字节的顺序时,2个字节(4个十六进制字符)是相同的!这显然是一个jpeg编码的图像...

要将此作为图像阅读,我会尝试:

  1. 简单地剥离每行的7位数字并将剩余字节写为二进制文件,如果此hex文件的字节顺序与您机器上的字节顺序相符,或
  2. 剥离7个第一个数字并反转每个2字节数据包的顺序,并将其写为二进制文件,如果您的机器的字节顺序与我为Jpec编写的字节顺序相符!
  3. 希望这有帮助!