我想用 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/