【发布时间】:2015-12-14 04:11:15
【问题描述】:
我有多个像这样的十六进制字符串(大字符串所以我截断了中间):
0xffd8fee000e41646000000010000004660000010000002c01000001000000004660000464646464646464646526464646526465264652646465265264652646465265265652652652652646526f702043686f702043533620284d6163 .............................................. ..................................................... ..................................................... .............. 7D8D9DAE1E2E3E4E5E6E7E8E9EAF1F2F3FF7F8F9FAFFC4001F0100030101010101010101010000000000000102030405060708090A0BFFC400B511000201020404030407050404000102770
我想将每个字符串保存在一个文件中。但是我的代码运行不好:
import binascii
data = binascii.a2b_hex(my_hex_string)
with open('/path/image.jpg', 'wb') as image_file:
image_file.write(data)
我收到此错误:
TypeError:奇数长度的字符串
当我删除第一个 0 时,我得到了这个:
TypeError:找到非十六进制数字
当我删除前两个字符时(因为 JPG 应该以 FF D8 开头),我又得到了这个:
TypeError:奇数长度的字符串
有什么想法吗?
【问题讨论】:
-
也许你最好还是删除 last
0。 -
如何删除前 2 个字符?字符串是否包含新行?
-
感谢您的回复,当我按照 Mathias 的建议删除最后一个 0 时,我在打开文件时收到以下错误:“错误解释 JPEG 图像文件(在状态 201 中对 JPEG 库的调用不正确) ”。是的,我删除了它不包含任何新行的字符串
-
你是在
data还是my_hex_string上使用strip? -
嗨塞缪尔,在 my_hex_string 上
标签: python image python-2.7 hex jpeg