当我与之通信的设备发送二进制数据时,我可以恢复大部分数据。但是,似乎总会丢失一些字节,替换为非标准字符。例如,一个单独的输出如下所示:
\xc4\xa5\x06\x00.\xb3\x01\x01\x02\x00\x00\x00=\xa9
句点和等号应该是十六进制格式的传统字节(我在另一个应用程序中确认了这一点)。其他时候我得到其他奇怪的字符,如')'或's'。这些字符通常出现在完全相同的位置(随着我传递给设备的命令而变化)。
如何解决此问题?
答案 0 :(得分:11)
您是否使用类似的内容显示输出?:
print output
如果您的某些字节恰好与可打印字符相对应,它们将显示为字符。试试这个:
print output.encode('hex')
查看所有字节的十六进制值。
答案 1 :(得分:1)
起初我喜欢@RichieHindle的回答,但是当我尝试它时,十六进制字节全部聚集在一起。 为了获得更友好的输出,我使用
print ' '.join(map(lambda x:x.encode('hex'),output))