我有一堆二进制文件,其中包含以下格式的数据:
i\xffhh\xffhh\xffhh\xffih\xffhh\xffhh\xffhh\xffhh\xffhi\xffii\xffjj\xffjj\xffjj\xffjk\xffkk\xffkk\xffkl\xffll\xffmm\xffmn\xffnn\xffon\xffno\xffop\xffop\xffpp\xffqq\xffrq\xffrs\xffst\xfftt\xfftt\xffuv\xffvu\xffuv\xffvv\xffvw\xffwx\xffwx\xffxy\xffyy\xffyz\xffz{\xffz{\xff||\xff}|\xff~}\xff}}\xff~~\xff~~\xff~\x7f\xff\x7f\x7f\xff\x7f\x7f\xff\x7f\x7f\xff\x80\x80\xff\x80\x81\xff\x81\x80\xff\x81\x81\xff\x81\x82\xff\x82\x82\xff\x82\x82\xff\x82\x83\xff\x83\x83\xff\x83\x83\xff\x83\x84\xff\x83\x84\xff\x84\x85\xff\x85\x85\xff\x86\x85\xff\x86\x87\xff\x87\x87\xff\x87\x87\xff\x88\x87\xff\x88\x89\xff\x88\x89\xff\x89\x8a\xff\x89\x8a\xff\x8a\x8b\xff\x8b\x8b\xff\x8b\x8c\xff\x8d\x8d\xff\x8d\x8d\xff\x8e\x8e\xff\x8e\x8f\xff\x8f\x8f
这些应该是一个人走路时的压力传感器读数,所以我假设它们是数字,但我想把它们转换成ascii,这样我就知道它们是什么了。如何转换它们?它们当前的格式是什么?
编辑:链接到此处提供的文件(Link)
第一部分看起来很奇怪。通常像\x8e这样的数字只是一个十六进制字节的代码,除了在第一部分中有像hh这样不应该是十六进制数字的一部分的字母。
但在第二部分中,你可以做如下事情:
注意,除了255(xff)之外,您总是得到一个介于127和143之间的数字。
我非常震惊和震惊,一点也不惊讶于所有华夫饼,比如“你有像hh这样的字母,不应该是十六进制数的一部分”和“它们似乎在第一个x7f就开始有意义了”。没有人看到任何输出吗?
下面显示了它可能是如何结束的,忽略了看起来只是噪音的
\xff
:所以让我们试着从文件中恢复:
您仍然需要阅读设备的文档,以了解将这些0-254值乘以的比例因子是多少。
您会注意到派生的数字每次都会更改+1、0或-1。这完全符合一个假设,即每次读取只有1个字节,而不是每次读取两个或更多字节。
另一种想法是:也许
\xff
是一个开始或结束哨兵,并且每个周期有两个值(开始、停止)或(传感器-a、传感器-B)被报告。仅仅打开一个二进制文件是猜不出格式的。您将必须获得有关特定压力传感器读数数据存储方式的信息。
当然,当您知道格式时,很容易以二进制模式读取文件,然后从中获取所有有意义的数据
相关问题 更多 >
编程相关推荐