在Python中编写十六进制字符串作为二进制数据
我有一个类似于在Python中编写十六进制字符串作为二进制数据,python,hex,Python,Hex,我有一个类似于FF0000FF的数据字符串,我想将其作为原始8位字节11111111 00000000 00000000 11111111111写入文件。然而,当使用struct.pack时,我似乎最终得到了很多数据FF变成FF 00,或者我得到了0和1的文本ASCII版本 我如何简单地获取一个十六进制字符串并将其作为二进制写入,这样当在十六进制编辑器中查看时,您会看到相同的十六进制字符串 你要找的 binascii.unexlify(hexstr) 返回十六进制字符串hextr表示的二进制数据
FF0000FF
的数据字符串,我想将其作为原始8位字节11111111 00000000 00000000 11111111111
写入文件。然而,当使用struct.pack
时,我似乎最终得到了很多数据FF
变成FF 00
,或者我得到了0和1的文本ASCII版本
我如何简单地获取一个十六进制字符串并将其作为二进制写入,这样当在十六进制编辑器中查看时,您会看到相同的十六进制字符串 你要找的
binascii.unexlify(hexstr)返回十六进制字符串hextr表示的二进制数据。
此函数与b2a_hex()相反。hexstr必须包含
偶数十六进制数字(可以是上限或下限
否则将引发类型错误
在Python 3.x中,您只需在字符串的修改形式前面使用b前缀,然后将其写入二进制文件,如下所示:
hex_as_bytes = b"\xFF\x00\x00\xFF"
with open("myFileName", "wb") as f: f.write(hex_as_bytes)
是要写出二进制的字符串表示形式,还是写出实际的数值?我想把十六进制对的二进制表示形式写成二进制格式的8位值。对不起,我省略了十六进制转义。我现在修好了
hex_as_bytes = b"\xFF\x00\x00\xFF"
with open("myFileName", "wb") as f: f.write(hex_as_bytes)