Python字节数组到位数组

标签 python type-conversion bit-manipulation byte bit

我想用 Python 和 scapy 解析一些数据。 因此,我必须分析单个位。但目前我有一些有效负载的 UDP 数据包,例如:

bytes = b'\x18\x00\x03\x61\xFF\xFF\x00\x05\x42\xFF\xFF\xFF\xFF'

是否有任何优雅的方法来转换字节,以便我可以访问单个位,例如:

bytes_as_bits = convert(bytes)
bit_at_index_42 = bytes_as_bits[42]

最佳答案

这会起作用:

def access_bit(data, num):
    base = int(num // 8)
    shift = int(num % 8)
    return (data[base] >> shift) & 0x1

如果你想创建一个二进制数组,你可以像这样使用它:

[access_bit(data,i) for i in range(len(data)*8)]

关于Python字节数组到位数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43787031/

相关文章:

reference - ABAP中的#符号是什么?

c++ - 从 C++ 数据结构到 Swift 的类型转换

java - 如何比 Newton Raphson 更有效地计算 Big Decimal 的平方根?

java - 仅加密图像文件的内容而不是整个文件

python - 不可散列类型 : 'list'

python - 如何使用 python-geojson 从 python 转储格式化 geoJSON 文件?

python - 从两个 pandas DataFrame 中选择前 N 个

c - 精度考虑在 C 中如何工作?

go - 你将如何在 Go 中设置和清除单个位?

python - FT232RL 上的流量控制