我正在寻找一个简单的算法,将两个2字节整数合并为一个唯一的4字节整数。
这两个2字节整数都是正整数,范围在0..65535
之间。
我想创建一个单独的 4字节整数,它是两个整数的精确组合方式,以便轻松实现以下功能:
(1) 给定两个2字节整数 -> 计算该4字节整数的值。
(2) 给定4字节整数 -> 解析两个2字节整数的内容。
有什么方法可以在python
中实现此操作吗?
如何这样做:
def combine(n, m):
return (n << 16) | m
def extract(c):
return (c >> 16), c & 0xffff
这个解决方案将两个2字节整数放在32位单词的上半部分和下半部分。为了提取这些值,只需获取单词的上半部分(c >> 16
)和下半部分(c & 0xffff
)。
>>> i1, i2 = 345, 12
>>> i1 * 0x10000 + i2
22609932
>>> divmod(22609932, 0x10000)
(345, 12)