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

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

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

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

000000010000001000000011

然后我想得到对应于:

000000010000001000000011,根据计算器转换为小数后为整数 66051。

我怎样才能在 Python 中从 3 个小整数变成最后一个更大的整数?

最佳答案

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

>>> (((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, 2, 3)
b'\x01\x02\x03'

您可以将其转换为 int

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

关于python - 如何连接来自 3 个小整数的字节以生成由 Python 中的这些字节表示的更大数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66093963/

相关文章:

javascript - 对象可能是 'null' : TypeScript, React useR

haskell - 为什么 map 使用的这个函数需要返回一个(单例)列表而不是一个元素?

google-cloud-platform - 如何查看 Google Cloud Function

c# - 如何使 IEnumerable 和 IQueryable 异步?

reactjs - 有没有 Ionicons : Icon props?

flutter - 如何根据 flutter 中的文本高度调整容器高度?

react-native - react native : Refresh Controll not

list - 在 Elixir 中使用类型规范中的原子列表

javascript - Axios 响应未定义

vuejs3 - vue3 中 shallowReactive 和 shallowRef 的区别?