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

问题描述 投票:5回答:2

我有像FF0000FF这样的数据字符串,我想把它写成文件作为原始的8位字节11111111 00000000 00000000 11111111。然而,当我使用FF或者得到0和1的文字ASCII版本时,我似乎最终得到了很多数据FF 00 00 00变成struct.pack

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

python hex
2个回答
11
投票

你在找binascii

binascii.unhexlify(hexstr) 返回十六进制字符串hexstr表示的二进制数据。 该函数与b2a_hex()的反函数。 hexstr必须包含 偶数个十六进制数字(可以是上限或下限) case),否则会引发TypeError。

import binascii
hexstr = 'FF0000FF'
binstr = binascii.unhexlify(hexstr)

0
投票

在Python 3.x中,您只需在字符串前面使用b前缀,然后将其写入二进制文件,如下所示:

hex_as_bytes = b"FF0000FF"
with open("myFileName", "wb") as f: f.write(hex_as_bytes)
© www.soinside.com 2019 - 2024. All rights reserved.