我试图从我正在开发的一个硬件上捕获一些数据,这些硬件是通过cypress的fx2lp芯片开发的。我用cypress的软件将我的数据流样本记录到一个文件中,我正试图用python读取这个文件。然而,当我读到它时,我得到了一些有趣的输出,我不知道如何解释。在
我这样打开文件:
f = open("testdata_5Aug2014.dat","rb")
然后我读取不同大小的数据块,类似于:
^{pr2}$通常,上面这一行的结果(以及我想看到的)是这样的:
'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x12\x05\x12\x05\x12\x05\x12\x05\x12\x05\x12\x05\x12\x05\x12\x05\x12\x05\x12\x05\x12\x05\x12\x05\x12\x05\x12\x05\x12\x05\x12\x05\x12\x05\x12\x05\x12\x05\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
但我有时得到的回报包括't'和'?'像这样扔进去:
'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00t\x14t\x14t\x14t\x14t\x14t\x14t\x14t\x14t\x14t\x14t\x14t\x14t\x14t\x14t\x14t\x14t\x14t\x14t\x14t\x14K\x01?\x00\xff??\x00\xff??\x00\xff??\x00\xff?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
这是个问题,因为当我使用解包结构为了解析这个,它不会返回任何附加了特殊字符的字节。在
所以我的问题是:这些符号是什么?他们是怎么到那里的?我该如何移除或处理它们?在
您正在从文件中读取二进制数据,但是
f.read
以字符串形式返回该数据。打印字符串时,它将这些字节解释为字符。但是,并不是每个字节值都映射到一个可显示的字符,因此有些字节显示为转义序列:\x
后跟两个十六进制数字。例如,0显示为\x00
,255显示为\xff
。在有些值确实映射到字符,例如63映射到“?”116映射到“t”。}。在
ord
和chr
函数可分别用于获取字符的数值和数字的字符映射,因此ord('t')
返回116,而chr(63)
返回{不管是哪种方式,不管它是如何显示的,您的数据都应该很好,
struct.unpack
应该可以像往常一样使用它。在相关问题 更多 >
编程相关推荐