将字节流从智能电表转换为字符串

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

我从智能电表通过 Raspberry PI 上的 USB 红外传感器接收字节流,如下所示:

CHAR = b'\x00\x86\x1b\x1b\x1b\x1b\x01\x01\x01\x01v\x05\x18\xe0\x99:b\x00b\x00rc\x01\x01v\x01\x01\x05\ x08J\xdd\xbe\x0b \x01ISK\x00\x044\xb9Zrb\x01e\x08J\xe1\xf4b\x01c\x15\xb9\x00v\x05\x18\xe0\x99;b\x00b\x00rc\x07\x01w\x01\x0b \x01ISK\x00\x044\xb9Z\x07\x01\x00b \xff\xffrb\x01e\x08J\xe1\xf4t'

CHAR 是

在Python2中转换如下:

data = ''
char = port.read()
data = data + char.encode('HEX')

工作正常

如何在Python3中进行转换?

转换后应如下所示:

# 1b1b1b1b0101010176050033b18162006200726301017601010500113b2b0b0a0
# 149534b000434b95a72620165001137286201634e120076050033b182620062007  .....

我收到此错误:

Traceback (most recent call last):
  File "/home/pi/temperatur/Smartmeter.py", line 72, in <module
data = data + char.encode('HEX') # Original in Python 2
AttributeError: 'bytes' object has no attribute 'encode'
python string type-conversion byte
1个回答
0
投票

在Python 3中,bytes.hex()方法通常用于将字节转换为十六进制格式

data = b'Hello, World!'
print(data.hex()) 
© www.soinside.com 2019 - 2024. All rights reserved.