Python - 将十六进制字节数组转换为纯十六进制字节数组

问题描述 投票:0回答:1

我正在从我的功率计读取基于 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
1个回答
3
投票

它不是真正的“十六进制值的字节数组”。这就是 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'
© www.soinside.com 2019 - 2024. All rights reserved.