python字符串每两个字符到字节 - 快点

Tim*_*nip 2 python string binary

得到一个二进制 blob 字符串,如:

input = "AB02CF4AFF"
Run Code Online (Sandbox Code Playgroud)

每一对“AB”、“02”、“CF”、“4A”、“FF”构成一个字节。我这样做:

data = StringIO()
for j in range(0, len(input)/2):
    bit = input[j*2:j*2+2]
    data.write('%c' % int(bit,16))
data.seek(0)
Run Code Online (Sandbox Code Playgroud)

工作正常,但是对于大的二进制 blob,这会变得不可接受,有时会引发 MemoryError。

struct.unpack 浮现在脑海中,但到目前为止还没有运气。

有什么办法可以加快速度吗?

Gar*_*ees 5

使用binascii.unhexlify

>>> import binascii
>>> binascii.unhexlify('AB02CF4AFF')
b'\xab\x02\xcfJ\xff'
Run Code Online (Sandbox Code Playgroud)

(在 Python 2 中,您可以使用hex编解码器进行解码,但这不能移植到 Python 3。)