2

我最近收到了一个文本文件,并告诉我可以将其转换为图像。文本文件看起来像这样......

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 文件(尽管我在网上看到的许多 hex 文件都有不同的格式,所以我不确定)。

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

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

谢谢

4

1 回答 1

1

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

我不习惯处理hex文件,但第 7 个数字看起来基本上是在计算行数。我将忽略它们,我相信您可以找到有关确切角色的文档(如果有的话!)。真正的数据字节是在每一行的其余部分中编码的内容。

前段时间,我写了一个轻量级的 jpeg 编码器。我进入源代码,看看我在你的文件中看到的字节是否响了:

该文件以 开头d8ff,我编写的用于编码 jpeg 的代码首先编写将其标识为 jpeg 并编码有关它的信息(例如其大小)的文件头,然后写入字节FFDB(请参阅此行,其中“SOI " 代表“文件开始”)。

然后我们有e0ff 1000 464a 4649 0100 0001......我的代码写道:(FFE0 0010 4A46 4946 0001 0100第 127 行和以下),这是标准 JPEG 文件的下一个字节,带有JFIF 标头

最后,文件的最后 3 个字节是d9ff,并且jpec写入FFD9文件结尾字节。

显然,您的文件不是以与我的代码相同的字节顺序编写的(实际上它看起来像是middle-endian,我之前没有真正看到过......),但您可以看到每个 2 字节的数据包(4 hex characters)在反转这两个字节的顺序时是一样的!这显然是一个 jpeg 编码的图像......

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

  1. 如果此十六进制文件的字节序适合您机器上的字节序,则只需剥离每行的前 7 个数字并将剩余字节写入二进制文件,或者
  2. 如果您的机器的字节序符合我为 Jpec 编写的字节序,则剥离前 7 个数字并将每个数据包的 2 个字节的顺序颠倒,并将其写入二进制文件!

希望这可以帮助!

于 2013-08-01T09:10:28.390 回答