Python:将十六进制字符串保存到jpg图像文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python:将十六进制字符串保存到jpg图像文件相关的知识,希望对你有一定的参考价值。
我有多个像这样的十六进制字符串(大字符串所以我截断了中间):
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:奇数长度字符串
有什么想法吗?
你确定字符串中没有额外的东西吗?空白,换行等等?
试试my_hex_string.strip()
此外,有可能,您可以在字符串中包含空格,因此您可以执行类似的操作来清除它们:
binascii.a2b_hex(toSend.replace(' ', ''))
3.5哟线程。但是获得了很多观点,所以我将添加我的2c。 OP的代码对我来说很好。我的猜测是十六进制字符串已损坏。最重要的是,没有看到FFD9 for "end of image."
以上是关于Python:将十六进制字符串保存到jpg图像文件的主要内容,如果未能解决你的问题,请参考以下文章