6

当我与之通信的设备发送二进制数据时,我可以恢复大部分数据。但是,似乎总是有一些字节丢失,被非标准字符取代。例如,一个单独的输出如下所示:

\xc4\xa5\x06\x00.\xb3\x01\x01\x02\x00\x00\x00=\xa9

句点和等号应该是十六进制格式的传统字节(我在另一个应用程序中确认了这一点)。其他时候我会得到其他奇怪的字符,例如')'或's'。这些字符通常出现在完全相同的位置(根据我传递给设备的命令而有所不同)。

我该如何解决这个问题?

4

2 回答 2

12

您是否使用类似这样的方式显示输出?:

print output

如果您的某些字节恰好与可打印字符相对应,它们将显示为字符。试试这个:

print output.encode('hex')

查看所有字节的十六进制值。

于 2011-10-03T21:48:36.203 回答
2

起初我喜欢@RichieHindle 的答案,但是当我尝试它时,十六进制字节都聚集在一起。为了获得更友好的输出,我使用

print ' '.join(map(lambda x:x.encode('hex'),output))
于 2016-03-01T21:15:09.807 回答