2017-01-30 27 views
0

我讀從在RS232格式輸出一超聲波傳感器的字符 - 它發送的R,接着4位數字後跟一個回車例如「R1597 \ r 」。charactrers具有「B」在前面在Python 3

在python3這是由「B」之前,使之成爲b'R1597 \ R」。我已經搜索了堆棧溢出的其他相關問題,據我瞭解,這只是表示字符是字節文字,'b'不在實際數據中。但是代碼;

char=ser.read() 
while char != 'R': 
    ....... 

不起作用 - 它只是一直循環等待'R'到達。

但是,如果我使用的代碼;

char=ser.read() 
while char != b'R': 
..... 

工作 - 循環直到b'R'到達,然後繼續下一段代碼。

所以現在我很迷茫,有python3把一個「B」從我現在必須剝去的數據?

任何幫助,非常感謝。

乾杯。

+0

的可能的複製[在Python3,當我在讀一個二進制文件爲什麼「B」成爲預先考慮我的內容?](http://stackoverflow.com/questions/15845074/in-python3-when-im -reading-一個二進制文件 - 爲什麼 - 不-b-成爲-預先考慮到我的-C) –

回答

0

沒有,b沒有注入到你的數據。 b告訴Python 3文字'R'應該被解釋爲字節而不是字符串文字。取決於底層編碼(例如UTF-8,UTF-16等),字符串字符可能不僅僅是一個字節。在你是RS-232的情況下,你正在接收7位ASCII字符(即字節),因此b確保你將字節與字節進行比較。有關字節文字的更多信息,請參閱Python 3手冊的Section 2.4.1