python的f.read奇怪的返回

2024-05-14 17:06:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从我正在开发的一个硬件上捕获一些数据,这些硬件是通过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'

这是个问题,因为当我使用解包结构为了解析这个,它不会返回任何附加了特殊字符的字节。在

所以我的问题是:这些符号是什么?他们是怎么到那里的?我该如何移除或处理它们?在


Tags: 文件数据硬件软件记录芯片数据流样本
1条回答
网友
1楼 · 发布于 2024-05-14 17:06:20

您正在从文件中读取二进制数据,但是f.read以字符串形式返回该数据。打印字符串时,它将这些字节解释为字符。但是,并不是每个字节值都映射到一个可显示的字符,因此有些字节显示为转义序列:\x后跟两个十六进制数字。例如,0显示为\x00,255显示为\xff。在

有些值确实映射到字符,例如63映射到“?”116映射到“t”。ordchr函数可分别用于获取字符的数值和数字的字符映射,因此ord('t')返回116,而chr(63)返回{}。在

不管是哪种方式,不管它是如何显示的,您的数据都应该很好,struct.unpack应该可以像往常一样使用它。在

相关问题 更多 >

    热门问题