我想将一个整数序列与单个字节字符串中的标记列表连接起来,例如,如下所示:
foo
bar
baz
会变成(用 1 个字节表示整数):
b'\x00foo'
b'\x01bar'
b'\x02baz'
我想出的最好的看起来像这样:
for i, token in zip(range(256), "foo bar baz".split()):
print(i.to_bytes(1, sys.byteorder) + token.encode())
然而,迭代本身在循环的每一步都涉及 Python 的整数和字节之间的转换,因此它比简单地迭代整数要慢得多(对我来说是 10 倍)。
问题是:有没有办法直接迭代整数的字节字符串表示,而不是整数本身?
最佳答案
您可以使用 numpy 并直接访问缓冲区接口(interface)以避免转换:
在 python 2.7 (numpy 1.7.1) 上,这段代码:
N = arange(256, dtype='uint8')
for i, token in enumerate("foo bar baz".split()):
print repr(N.data[i] + token.encode())
给出:
'\x00foo'
'\x01bar'
'\x02baz'
关于python - 在字节表示形式的整数序列上有效递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17493883/