我有一个代表 .jpeg 图像的字节文件。但是,当我尝试打开图像时,收到一条错误消息,指示我的文件格式不正确。我对此感到有点困惑,因为文件中的字节看起来应该可以工作。根据我的阅读,该文件与 JPEG 文件格式完全一致。这是一个大小合适的图像,所以我不会发布所有数据,但前几行看起来像这样:
ff d8 ff e0 00 10 4a 46 49 46 00 01 01 00 00 01 00 01 00 00 ff e1 00 58 45 78 69 66 00 00 4d 4d 00 2a 00 00 00 08 00 02 01 12 00 03 00 00 00 01 00 06 00 00 87 69 00 04 00 00 00 01 00 00 00 26 00 00 00 00 00 03 a0 01 00 03 00 00 00 01 00 01 00 00 a0 02 00 04 00 00 00 01 00 00 0a 20 a0 03 00 04 00 00 00 01 00 00 07 90 00 00 00 00 ff db 00 43 00 1f 15 17 1b 17 13 1f 1b 19 1b 23 21 1f 25 2f 4e 32 2f
我查看了其他一些 .jpeg 图像的源代码,我可以看出它与我这里的图像有很大不同。我怀疑正在进行一些编码,我只是不确定它是什么。如果有人能指出我正确的方向,我将非常感激。谢谢!
编辑
这是文件的十六进制数据。我知道我需要将它转换成某种东西。我只是不确定是什么。是十进制、二进制还是什么?谢谢!
如果您说文本文件中确实有代表二进制的十六进制数字 - 您可以使用此工具将其转换:http://stahlworks.com/dev/index.php?tool=hextobin
或者你可以自己编写一个程序。如果您添加一些有关您了解的语言的信息,有人可能会为您指明正确的方向。这是 Perl 中的实现http://www.velocityreviews.com/forums/t22256-hexadecimal-to-binary-file-conversion-utility.html
您绝对应该使用JPEGsnoop,这是一个专用于(除其他外)检查JPEG文件的工具 - 包括损坏的JPEG照片中的错误检测(请参阅JPEGsnoop使用)。
根据您发布的内容,前 20 个字节完全正确(包括有效的 SOI 标记
0xFFD8
、APP0 标记 0xFFE0
、段长度 0x0010
等)。 JPEGsnoop 将帮助识别问题所在。
FF D8 FF E0 00 10 4A 46 49 46 00 01 01 00 00 01 00 01 00 00 FF ED 00 6C 50 68 6F 74 6F 73 68 6F 70 20 33 2E 30 00 38 42 49 4 D 0 4 04 00 00 00 00 00 50 1C 02 28 00 4A 46 42 4D 44 30 66 30 30 30 37 35 38 30 31 30 30 30 30 65 37 32 39 30 30 30 30 64 34 35 65 30 30 30 3 0 37 6 6 36 32 30 30 30 30 35 65 36 37 30 30 30 30 30 32 37 65 30 30 30 30 66 65 39 66 30 30 30 30 31 33 61 30 30 30 30