在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)