python - 如何在 Python 中解码字节数组
问题描述
嘿,我多次联系该公司,经过一些奇怪的对话后,我得到了一些代码,可以让我读取和解码数据。谢谢你们每一个人的帮助!
我将一个 PCB 连接到我的 Raspberry PI,它应该输出温度、湿度、压力和空气质量。我通过串行接收数据。我编写了一个 Python 脚本来读取串行数据并输出数据。
#!/usr/bin/env python
import time
import serial
ser = serial.Serial(
port='/dev/ttyAMA0',
baudrate = 9600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1
)
while 1:
x=ser.readline()
print (x)
数据看起来像这样(多个样本数据):
b'ZZ?\x0f\t,\x16a\x01\x86\x8d\x10Y\x00\x02\xa5\x9b\x00p\xdd'
b'ZZ?\x0f\t.\x16]\x01\x86\x8f\x10Z\x00\x02\xa3\x7f\x00p\xc0'
b'ZZ?\x0f\t0\x16[\x01\x86\x91\x10Y\x00\x02\xa2\xcc\x00p\r'
b'ZZ?\x0f\t2\x16S\x01\x86\x91\x10V\x00\x02\xa4\xe7\x00p!'
b'ZZ?\x0f\t3\x16O\x01\x86\x8f\x10X\x00\x02\xa3\x7f\x00p\xb5'
所以这应该是多个字节数组。遗憾的是没有文档,所以我找不到任何如何解码它。如果我尝试解码数据:
x=ser.readline().decode()
我收到以下错误:
Traceback (most recent call last):
File "ser.py", line 16, in <module>
x=ser.readline().decode()
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x86 in position 9: invalid start byte
所以也许数据不是utf-8?忽略错误没有帮助。有人知道如何正确解码数据吗?这对我有很大帮助!
谢谢!
解决方案
我多次联系该公司,经过一些奇怪的对话后,我得到了一些代码,可以让我读取和解码数据。谢谢你们每一个人的帮助!