pyserial 串口输出16进制数组问题

1.使用pyserial发送16进制数组给下位机,测试代码如下。

def order_list():
    a = 'aa0902630000bb'
    a_list = []
    for i in a.split():
        a_list.append(binascii.a2b_hex(i))
    return a_list

ser = serial.Serial('/dev/ttyUSB0', 9600)
ser.writelines(order_list())

问题:为什么执行list.append之后,list里面会多一个b?这个‘b’是从哪来的,还是这个b代表的是数据类型?但是如果是数据类型的话,为什么我打印第一个列表元素,为什么这个b也会一起打印出来?
图片描述

阅读 6.1k
2 个回答

b指bytes object,通常和str object互相转换。

>>> "中文".encode('u8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('u8')
'中文'

a2b_hex是将字符串指转换成16进制字节码,这是串口通信常用的通信通信方式,a2b和b2a方法是互为逆向的转换,你自己测测就知道了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题