我正在从我的功率计读取基于 SML 协议的数据。从 /dev/ttyUSB0 我收到以下数据(摘录):
b"\x1b\x1b\x1b\x1b\x01\x01\x01\x01v\x07\x00\x17\x06\xf7\x84\x08b\x00b\x00rc\x01\x01v\x01\x01\x07\x00\x17\x11\x9d\x81x\x0b\t\x01emh\x00\x00c_\xdd\x01\x01cl\x18\x00v\x07\x00\x17\x06\xf7\...
我怎样才能将这个十六进制值的字节数组转换为像
1b 1b 1b 1b
这样的纯十六进制字节数组
它不是真正的“十六进制值的字节数组”。这就是 Python 向您显示 这些数据的方式。这个字节数组(或者可能是
bytes
)包含一个整数序列——实际的字节:
>>> list(b"\x1b\x1b\x1b\x1b\x01\x01\x01")
[27, 27, 27, 27, 1, 1, 1]
个别元素也是整数:
>>> b"\x1b\x1b\x1b\x1b\x01\x01\x01"[1]
27
如果你想要一个包含没有\x
的十六进制数字的
string,使用
.hex
方法:
>>> b"\x1b\x1b\x1b\x1b\x01\x01\x01".hex()
'1b1b1b1b010101'
>>> b"\x1b\x1b\x1b\x1b\x01\x01\x01".hex(' ')
'1b 1b 1b 1b 01 01 01'