我正在用Python 3.4.1编写一个程序,它使用PySerial测试一些硬件。
每次从串行端口读取一个字节,然后将其附加到列表中。当列表达到一定大小时,将其发送以进行处理。 根据传入的数据,有时必须在列表填满之前处理数据,因此逐字节操作。
然后列表返回:
[b'F', b'o', b'o']
对于部分测试脚本,我需要能够将其转换为字符串,以便我可以打印:
Foo
我的解决方案是:
b''.join([b'F', b'o', b'o']).decode("ascii")
但这感觉不对。有更好的方法吗?
答案 0 :(得分:5)
IMO,这稍微有点可读性,但如果我在审核中遇到您的代码,我不会抱怨。在Python 2.7中测试:
>>> bytearray([b'F', b'o', b'o']).decode('ascii')
u'Foo'
答案 1 :(得分:0)
如果您不喜欢join
的外观,可以执行以下操作:
bytes.join(b'', [b'F', b'o', b'o']).decode('ascii')
这与您的代码几乎相同。我认为你不会找到更好的方法。