微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何连接来自 3 个小整数的字节以生成更大的数字,由 Python 中的这些字节表示?

如何解决如何连接来自 3 个小整数的字节以生成更大的数字,由 Python 中的这些字节表示?

我有 3 个小整数(小于 255),因此可以用一个字节表示。

我想从 3 个字节的序列中创建一个更大的 int。

例如,如果这 3 个整数分别为 1、2 和 3,我会:

000000010000001000000011

然后我想得到对应于的int:

000000010000001000000011,根据计算器,当转换为小数时,这将是整数 66051。

如何在 Python 中从 3 个小整数变成最后一个更大的整数?

解决方法

位移运算符?

例如,(1 << 16) + (2 << 8) + 3 给出 66051。

,

您可以在添加另一个元素之前反复左移一个运行总数:

>>> (((1 << 8) + 2) << 8) + 3
66051

这种迭代操作可以使用functools.reduce推广到任意数量的整数:

>>> from itertools import reduce
>>> reduce(lambda acc,x: (acc << 8) + x,[1,2,3]
66051

您还可以使用 struct 模块将三个 8 位值打包成一个 bytes 值:

>>> import struct
>>> struct.pack('BBB",1,3)
b'\x01\x02\x03'

您可以将其转换为 int

>>> int.from_bytes(b'\x01\x02\x03','big')
66051
,

您可以对整数使用位移运算符:

a = 0b01
b = 0b10
c = 0b11

d = (a << 16) + (b << 8) + c

print(f"{d:b}")
10000001000000011

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。