我得到了两个对象,ab,每个包含字节对象中的一个字节.

我正在try 对其进行逐位运算,以获得两个最重要的位(大端,所以在左边).

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操作?

推荐答案

字节序列是一个不可变的整数序列(就像一个数字元组).不幸的是,不管将它们放在sequence of bytes上有多大意义,它们都没有定义位操作.

因此,您必须执行手动路径,并分别对字节运行操作.由于每个字节只有一个字节,所以实现起来非常简单.出于同样的原因,您也不需要关心endianness,因为它只适用于多个字节.

所以,你可以这样做:

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

Python-3.x相关问答推荐

使用Python请求从特定URL下载图像时出错

将数据帧扩展为矩阵索引

数据类对象列表的字典获取方法-在数据类列表中查找具有特定变量值的数据类

PANDAS中当前数据帧的匹配与更新

检测点坐标 - opencv findContours()

查找值始终为零的行 pandas

错误:无法为 pyconcorde 构建轮子,这是安装基于 pyproject.toml 的项目所必需的

数据框中从每个组/ID的底部删除行

如何统计一个值连续出现的次数?

txt 文件与不同的分隔符到整数列表

Pandas 在每组两个条件之间获得时间增量

python中两个连续的yield语句如何工作?

python3源的类图查看器应用程序

Python:如何判断一个项目是否被添加到一个集合中,没有 2x(hash,lookup)

str.format_map(mapping) 和 str.format 有什么区别

登录csv文件的正确方法是什么?

类方法和实例方法同名

Python pathlib 获取父级相对路径

如何阻止散景在 Jupyter Notebook 中打开新标签?

Beautifulsoup 的单元测试失败