我从智能电表通过 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 3中,bytes.hex()方法通常用于将字节转换为十六进制格式
data = b'Hello, World!'
print(data.hex())