Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.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 按位和对0xfff执行ing-无意义?_Python_Bit Manipulation - Fatal编程技术网

Python 按位和对0xfff执行ing-无意义?

Python 按位和对0xfff执行ing-无意义?,python,bit-manipulation,Python,Bit Manipulation,根据以下代码,您是否希望a和b的值存在任何差异: s = "\x4f\x00\x00\x50\xae\x08\x00\x00" a = map(lambda x:x & 0xffff, struct.unpack('HHHH', s)) b = map(lambda x:x, struct.unpack('HHHH', s)) 在这两种情况下,它们最终都是以下列表: [79, 20480, 2222, 0] 其中每个元素都是一个int 我问的原因是,我正在查看tcp.py的源代码,其

根据以下代码,您是否希望a和b的值存在任何差异:

s = "\x4f\x00\x00\x50\xae\x08\x00\x00"
a = map(lambda x:x & 0xffff, struct.unpack('HHHH', s))
b = map(lambda x:x, struct.unpack('HHHH', s))
在这两种情况下,它们最终都是以下列表:

[79, 20480, 2222, 0]
其中每个元素都是一个int


我问的原因是,我正在查看tcp.py的源代码,其中基本上包含此代码,“&0xffff”似乎毫无意义-我是否遗漏了什么?

只有当大于16位时,“&0xffff”才会起作用。也就是说,执行逻辑and生成一个值,其中比低16位更重要的位都设置为零。

只有当大于16位时,“&0xffff”才会产生差异。也就是说,执行逻辑运算并生成一个值,其中比低16位更重要的位都被设置为零。

好的,我认为pyip作者试图做的是确保值是两个字节-我假设'H'arg to struct unpack做到了这一点,但再次查看文档,即'H'的“标准”大小(unsigned short)将是两个字节,但它实际上取决于平台,因此他保证代码的可移植性。好的,我认为pyip作者试图做的是确保值是两个字节-我假设'H'arg到struct unpack会这样做,但再看一下文档,“H”的“标准”大小(unsigned short)将是两个字节,但它实际上依赖于平台,所以他保证了代码的可移植性。