【已解決】為什麼Python列印數據顯示
- 2020 年 1 月 10 日
- 筆記
這種情況出現在我的下位機向上位機傳遞數據後,上位機再列印數據的過程中。
舉一個案例。
我的下位機是一個單片機,會通過串口向上位機發送一段數據。
這裡隨意寫一個C下位機的程式
include "stm32f10x.h" include "delay.h" int main(void) { print("112233test332211n"); }
也隨意寫一個python上位機的程式
import serial s = serial.Serial('com7', 9600, timeout=3) data = s.readline() print(data)
很明顯的可以看出來,下位機通過串口com7與上位機連接,波特率是9600,不過這是次要的
按理說,上位機讀取一行數據後再把讀取的數據答應下來,就應該是和下位機一樣的數據
顯示為
112233test332211
可是並不是這樣的,在我的控制台里顯示如下
b'112233test332211'
這是為什麼呢???
————————————
說白了 Python3的字元串的編碼語言用的是unicode編碼,由於Python的字元串類型是str,在記憶體中以Unicode表示,一個字元對應若干位元組,如果要在網路上傳輸,或保存在磁碟上就需要把str變成以位元組為單位的bytes
python對bytes類型的數據用帶b前綴的單引號或雙引號表示:
'ABC' b'ABC'
要注意區分'ABC'和b'ABC',前者是str,後者雖然內容顯得和前者一樣,但bytes的每個字元都只佔用一個位元組