2017-01-30 21 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