【发布时间】:2014-01-11 00:21:08
【问题描述】:
得到一个二进制 blob 字符串,如:
input = "AB02CF4AFF"
每一对“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)
工作正常,但是对于大型二进制 blob,这变得无法接受,并且有时事件会引发 MemoryError。
我想到了struct.unpack,但到目前为止还没有运气。
有什么方法可以加快速度?
【问题讨论】:
-
input.decode('hex') 能提高效率吗?
-
@immortal 是的!甚至不需要 struct.unpack 和循环 :S 我的代码现在高出无数倍。谢谢!顺便说一句:你的答案应该是公认的答案,我应该如何处理?再次感谢。
-
数百万倍更快
-
添加为答案,很高兴它有帮助:-)