python - 在字节表示形式的整数序列上有效递增

标签 python python-3.x

我想将一个整数序列与单个字节字符串中的标记列表连接起来,例如,如下所示:

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/

相关文章:

python - 如何使用Python让网页实时显示动态数据?

python - Python 中的空填字游戏求解器

python - 是否可以将 PyPy 嵌入到 .NET 应用程序中?

python - 数据存储中的一对多关系

python - 我如何通过使用 python 传递参数来调用 AWS lambda 函数?

python - 无法在我的 Python 项目中使用 Pillow

Python,如何将图像设置到ttk.notebook选项卡

带有 GenericViewSet 的 Django 休息框架 : Filter results base on query parameters from the url

python - 在python中高效处理大型二进制文件

Python 安装工具 : package directory does not exist