Python:从两个整数创建一个整数?
我正在寻找一个简单的算法,将两个2字节的整数“组合”成一个唯一的4字节整数 两个2字节整数都是范围Python:从两个整数创建一个整数?,python,algorithm,Python,Algorithm,我正在寻找一个简单的算法,将两个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
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
def联合收割机(n,m):
返回(n>16),c&0xffff
此解决方案将一个2字节整数放在32位字的上半部分,另一个放在下半部分。为了提取这些值,只需取单词的上半部分(<代码> C > 16)/>代码>下半部分(<代码> C和0xFFFF < /代码>)。 @ USE3262424,考虑当n或m被签名时,您是否关心安全性,或者它们的大小是否大于16位。(如果i1是浮动的,i1*0x10000也会污染较低的16位。)德克,你的分数低于伊格纳西奥,因此我选择你的答案作为获胜答案。虽然两者都很好。
>>> i1, i2 = 345, 12
>>> i1 * 0x10000 + i2
22609932
>>> divmod(22609932, 0x10000)
(345, 12)