Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:从两个整数创建一个整数?_Python_Algorithm - Fatal编程技术网

Python:从两个整数创建一个整数?

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

我正在寻找一个简单的算法,将两个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
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)