Python:将十六进制字符串保存到jpg图像文件

问题描述 投票:2回答:2

我有多个像这样的十六进制字符串(大字符串所以我截断了中间):

0xFFD8FFEE000E41646F626500640000000002FFE11E2445786966000049492A006A0500002C010000010000002C0100000100000041646F62652050686F746F73686F702043533620284D6163 ................................................. .................................................. .................................................. ........... 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:奇数长度字符串

有什么想法吗?

python image python-2.7 hex jpeg
2个回答
0
投票

你确定字符串中没有额外的东西吗?空白,换行等等?

试试my_hex_string.strip()

此外,有可能,您可以在字符串中包含空格,因此您可以执行类似的操作来清除它们:

binascii.a2b_hex(toSend.replace(' ', ''))

0
投票

3.5哟线程。但是获得了很多观点,所以我将添加我的2c。 OP的代码对我来说很好。我的猜测是十六进制字符串已损坏。最重要的是,没有看到FFD9 for "end of image."

© www.soinside.com 2019 - 2024. All rights reserved.