Python:从HEX字符串中提取位

时间:2016-04-13 17:46:01

标签: python hex

这是我的代码

data[12] = '\x18'
c = 4
d = c & data[12]
print d

输出/错误

Error: TypeError: unsupported operand type(s) for &: 'str' and 'int'

请帮助解决这个问题。

我需要从8位中提取哪个位高。

像这样'\x18'有两位高我想拥有这些位置。

2 个答案:

答案 0 :(得分:2)

d = c & ord(data[12])

您不能对字符串执行二进制算术,因此请将此字符串转换为数字。

在您的情况下,\xSOMETHING表示单个(可能是不可打印的)字符,该字符在ASCII集中具有相应的位置。使用ord检索它,返回一个数字(在您的情况下为24)。

答案 1 :(得分:2)

您可以将单个字符转换为与ord等效的整数。

d = c & ord(data[12])

如果您要转换多个字符(字节),请使用struct module

>>> import struct
>>> struct.unpack('>H', '\x02\x84')[0]
644

如果您正在解码构成结构的多个字节,这在您的注释中看起来非常有用。您可以一次解码整个数据包。