【已解決】為什麼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的每個字元都只佔用一個位元組