python - 对字节进行按位运算

标签 python python-3.x bit-manipulation bitwise-and

我有两个对象,ab,每个对象都包含字节对象中的一个字节。

我正在尝试对此进行按位运算以获得两个最高有效位(big-endian,所以在左边)。

a = sock.recv(1)
b = b'\xc0'
c = a & b

然而,它愤怒地向我吐出一个TypeError

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for &: 'bytes' and 'bytes'

有什么方法可以在不考虑主机系统字节序的情况下对两个字节执行 AND 运算?

最佳答案

字节序列是一个不可变的整数序列(就像一个数字元组)。不幸的是,没有对它们定义按位运算——不管将它们放在一个字节序列上有多大意义。

因此您将不得不走手动路线并分别对字节运行操作。因为每个只有一个字节,所以这样做真的很简单。出于同样的原因,您也不需要关心字节顺序,因为这仅适用于谈论多个字节时。

所以,你可以这样做:

>>> a, b = b'\x12', b'\x34'
>>> bytes([a[0] & b[0]])
b'\x10'

关于python - 对字节进行按位运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22593822/

相关文章:

python - How to grab string(ip) from netstat pipe the string(ip) to whois command, grab a string(country) 从 whois 输出。并使用 iptables 禁止 ip

list - python : create a pandas data frame from a list

c - 使用 XOR 交换值

javascript - 表达式 "float | 0"如何生成整数?

python - 如何在 python - networkx 包中根据边缘的密度和权重找到网络簇

python - 如何为 'plt.contour' 中的曲线添加图例条目?

python - 关于 PyClass_Check 和 PyClass_IsSubclass 函数的一些混淆

用于谷歌游戏商店抓取的 Python API

python - 无法从某些元素中抓取特定项目

c - 获取字节 - 这是怎么错的?