我正在寻找一种简单的算法,它将两个2字节整数“组合”成一个唯一的4字节整数。
两个2字节整数都是0..65535
范围内的整数正数。
我想创建一个 4字节整数,这是两者的精确组合,以便于以下方式:
给定两个2字节整数(1) - >计算该4字节整数的值。
(2)给定4字节整数 - >解析两个2bytes整数的内容。
知道如何在python
中实现这一目标吗?
答案 0 :(得分:16)
怎么样:
def combine(n, m):
return (n << 16) | m
def extract(c):
return (c >> 16), c & 0xffff
该解决方案将一个2字节整数放在32位字的上半部分中,另一个放在下半部分中。为了提取值,只需单词(c >> 16
)的上半部分和下半部分c & 0xffff
)。
答案 1 :(得分:8)
>>> i1, i2 = 345, 12
>>> i1 * 0x10000 + i2
22609932
>>> divmod(22609932, 0x10000)
(345, 12)