python - 对 0xfff 进行按位与运算 - 毫无意义?

标签 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。

我问的原因是我正在查看 pyip 中 tcp.py 的源代码其中本质上包括这段代码,而“& 0xffff”似乎毫无意义——我错过了什么吗?

最佳答案

“& 0xffff”唯一产生影响的情况是当位数大于 16 位时。也就是说,执行逻辑与会产生一个值,其中比低 16 位更高的位全部设置为零。

关于python - 对 0xfff 进行按位与运算 - 毫无意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12499180/

相关文章:

当对网站进行更新时通知我的 Python 脚本。

c++ - 正确使用枚举 C++

bit-manipulation - 数字范围的 BITWISE AND(&)

c - 4 位值的按位循环右移

python - Grep 一个词并从不同时间的日志文件中找到它的计数

python - 以编程方式将文件移动到子目录(不使用 unix mv 命令)

python - django admin static 服务于错误的 url

python - 在字符串中添加一个空格

java - Scala 有 floatToIntBits 和 intBitsToFloat 方法吗?

c++ - 使用 "bitwise and"运算符 c++