鍍金池/ 問答/Python/ pyserial 串口輸出16進(jìn)制數(shù)組問題

pyserial 串口輸出16進(jìn)制數(shù)組問題

1.使用pyserial發(fā)送16進(jìn)制數(shù)組給下位機,測試代碼如下。

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())

問題:為什么執(zhí)行l(wèi)ist.append之后,list里面會多一個b?這個‘b’是從哪來的,還是這個b代表的是數(shù)據(jù)類型?但是如果是數(shù)據(jù)類型的話,為什么我打印第一個列表元素,為什么這個b也會一起打印出來?
圖片描述

回答
編輯回答
憶當(dāng)年

a2b_hex是將字符串指轉(zhuǎn)換成16進(jìn)制字節(jié)碼,這是串口通信常用的通信通信方式,a2b和b2a方法是互為逆向的轉(zhuǎn)換,你自己測測就知道了。

2017年9月22日 20:42
編輯回答
舊城人

b指bytes object,通常和str object互相轉(zhuǎn)換。

>>> "中文".encode('u8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('u8')
'中文'
2017年9月27日 20:23