Python:如何从两个整数创建一个单独的整数?

3

我正在寻找一个简单的算法,将两个2字节整数合并为一个唯一的4字节整数。

这两个2字节整数都是正整数,范围在0..65535之间。

我想创建一个单独的 4字节整数,它是两个整数的精确组合方式,以便轻松实现以下功能:

(1) 给定两个2字节整数 -> 计算该4字节整数的值。

(2) 给定4字节整数 -> 解析两个2字节整数的内容。

有什么方法可以在python中实现此操作吗?

2个回答

16

如何这样做:

def combine(n, m):
    return (n << 16) | m

def extract(c):
    return (c >> 16), c & 0xffff

这个解决方案将两个2字节整数放在32位单词的上半部分和下半部分。为了提取这些值,只需获取单词的上半部分(c >> 16)和下半部分(c & 0xffff)。


Dirk,你的分数比Ignacio低,因此我选择你的答案作为获胜者。虽然两个答案都非常好。 - user3262424

8
>>> i1, i2 = 345, 12
>>> i1 * 0x10000 + i2
22609932
>>> divmod(22609932, 0x10000)
(345, 12)

@user3262424,请考虑当n或m为有符号数,或它们的大小超过16位时是否需要关注安全性。(如果i1是浮点数,i1 * 0x10000也会污染低16位。) - smci

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接