我有一个像FF0000FF
这样的数据字符串,我想将它作为原始的8位字节11111111 00000000 00000000 11111111
写入文件。然而,当我使用struct.pack
时,似乎会得到过多的数据。FF
会变成FF 00 00 00
,或者我会得到0和1的ASCII文字版本。
如何简单地将十六进制字符串转换为二进制并将其写入文件,以便在十六进制编辑器中查看时可以看到相同的十六进制字符串?
我有一个像FF0000FF
这样的数据字符串,我想将它作为原始的8位字节11111111 00000000 00000000 11111111
写入文件。然而,当我使用struct.pack
时,似乎会得到过多的数据。FF
会变成FF 00 00 00
,或者我会得到0和1的ASCII文字版本。
如何简单地将十六进制字符串转换为二进制并将其写入文件,以便在十六进制编辑器中查看时可以看到相同的十六进制字符串?
binascii.unhexlify(hexstr)
将十六进制字符串 hexstr 转换为二进制数据并返回。
该函数是 b2a_hex() 的逆运算。hexstr 必须包含偶数个十六进制数字(可以是大写或小写),否则将引发 TypeError 异常。
import binascii
hexstr = 'FF0000FF'
binstr = binascii.unhexlify(hexstr)
bytes
的 hex
和 fromhex
:>>> ss = '7e7e303035f8350d013d0a'
>>> bytes.fromhex(ss)
b'~~005\xf85\r\x01=\n'
>>> bb = bytes.fromhex(ss)
>>> bytes.hex(bb)
'7e7e303035f8350d013d0a'
hex_as_bytes = b"\xFF\x00\x00\xFF"
with open("myFileName", "wb") as f: f.write(hex_as_bytes)