我有一串数据,如FF0000FF
,我想将其作为原始的8位字节11111111 00000000 00000000 11111111
写入文件。但是,在使用FF
时,我似乎最终得到了大量数据FF 00 00 00
变为struct.pack
,或者我得到了0'和1'的字面ASCII版本。第
如何简单地取一个十六进制字符串并将其写为二进制,因此在十六进制编辑器中查看时,您会看到相同的十六进制字符串?
答案 0 :(得分:10)
您正在寻找binascii。
<强> binascii.unhexlify(hexstr)强>
返回由十六进制字符串hexstr表示的二进制数据 该函数与b2a_hex()的反函数。 hexstr必须包含
偶数个十六进制数字(可以是上限或下限) case),否则会引发TypeError。
import binascii
hexstr = 'FF0000FF'
binstr = binascii.unhexlify(hexstr)
答案 1 :(得分:0)
在Python 3.x中,您可以仅在字符串前面使用b前缀,然后将其写到二进制文件中,如下所示:
hex_as_bytes = b"FF0000FF"
with open("myFileName", "wb") as f: f.write(hex_as_bytes)