我有一个以字符串形式表示的字节列表,例如,在Python3.3中打印列表时,我会得到以下输出:
DATA = ['FF', 'FF', 'FF', 'FF']
我想把它们转换成字节,例如0xFF、0xFF、0xFF、0xFF。我尝试了bytearray()函数,但是出现了错误。
我猜我在这里漏掉了一些简单的东西,但是我在SO和Google上查找了一下,目前还没有找到任何线索。
谢谢!
我有一个以字符串形式表示的字节列表,例如,在Python3.3中打印列表时,我会得到以下输出:
DATA = ['FF', 'FF', 'FF', 'FF']
使用binascii.unhexlify()
函数对合并的“bytes”进行转换:
import binascii
bytestring = binascii.unhexlify(''.join(DATA))
演示:
>>> import binascii
>>> DATA = ['FF', 'FF', 'FF', 'FF']
>>> binascii.unhexlify(''.join(DATA))
b'\xff\xff\xff\xff'
>>> import timeit
>>> timeit.timeit("bytes(int(x, 16) for x in DATA)", 'from __main__ import DATA')
1.7035537050105631
>>> timeit.timeit("unhexlify(''.join(DATA))", 'from __main__ import DATA; from binascii import unhexlify')
0.2515432750224136