Skip to main content
 首页 » 编程设计

python之将字节解码为 ascii 字符串

2025年05月04日25duanxz

我使用 pyserial 格式从外部设备接收字节:

b'S\rSN 00\rSC 00\rFC 00\rRI 00\rMF 00006643\rTS 0000BA39\rTB 00000000\rCB FFFFFFFF\rCL 002\rI> '

通过代码(片段)完成:

while ser.in_waiting > 0: 
    output = ser.read(ser.in_waiting) 
    print(output) 

所以我希望以如下形式将其打印为文本:

S 
SN 00 
SC 00 
FC 00 
RI 00 
MF 00006643 
TS 0000BA39 
TB 00000000 
CB FFFFFFFF 
CL 002 
I> 

但是当我尝试用print(output.decode()) 或print(output.decode('ascii')) 解码它时,我只得到了一部分所有 (84) 个字符:

我> 002FFFFF

怎么了?如何获取所有解码后的文本?

请您参考如下方法:

回车字符 '\r' 移动到行的开头而不转到下一行,因此行被覆盖。只需用换行符替换回车:

print(output.decode().replace('\r', '\n')) 

我假设您使用的是 Unix/Linux - 不确定它在 Windows 上是否不同。