在Python中将十六进制字符串写为二进制数据

时间:2014-07-23 17:11:13

标签: python hex

我有一串数据,如FF0000FF,我想将其作为原始的8位字节11111111 00000000 00000000 11111111写入文件。但是,在使用FF时,我似乎最终得到了大量数据FF 00 00 00变为struct.pack,或者我得到了0'和1'的字面ASCII版本。第

如何简单地取一个十六进制字符串并将其写为二进制,因此在十六进制编辑器中查看时,您会看到相同的十六进制字符串?

2 个答案:

答案 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)