python - 找到这个字节串的编码
问题描述
好的,这可能是一个非常模糊的不适定问题。但无论如何我都会尝试一下。
我已经通过使用读取了 .data 文件的第一行
with open('raw_000.data', 'rb') as f:
A = f.readline()
(仅使用“r”,它使用了 UTF-8 编码并且失败了)。
这给了我以下字节字符串
b'\x10\xa2\x8f\xbc-X\x98?\xfe\xd4\x17>\xdd\xda\x0e\xbf\xdc\xc5d?e\x19\x91?\xe0m\xb0<\xe7\xa8R @=\xca\xbd>\x94\x91\xb2\xbf\xba\xb3u>)\xbe\x01\xc0\x05\x1f\x83\xbf#\x04\xe2\xbf\x80\xbd;>\xe5 \x0e<\xc0\x0cS0?\xbd\xcaG?\x15\x9c\x07\xc0lX\x9d?\xc5\xa3j\xc0X+D\xc0T\x91\xad?\x13\x87\xdd\xbfjCs?m\ xdd\x02@\xebBi\xbf\xfc\xd8g=*NM\xbf&\x94&\xc0\x94\x91\xb2?=\xca\xbd>\xfc\xbfm\xbf\xf5\x96\x9f?\xf4\ x8b\xc0\xbfAz\x12@X\xc6\xee\xbe\x84\t\xcf\xbf\x1d\xdb\x93\xbfpw\x19\xc0\xbc\xe0\x85>|\xd5\xa1?\xe5 \x0e\xbc?\x80\xbd\xbb=|\xc0\xf7\xbe\\xc5\xda\xbe\xacB\xe4\xbf\x99\xbb\r@NGB\xbf\xaa\xbd~@;\ xc0\xf2\xbf\x1a\xd1\xc8>\xdc\xc5\xe4\xbfe\x19\x11\xc0\x10\xa2\x8f<-X\x98\xbf\n'
现在这应该包含一些有意义的数据。但我不知道如何“解码”这个,就像......什么类型的解码......我所知道的是
chardet.detect('...')
给了
{'confidence': 0.0, 'encoding': None}
.
除此之外,文件 raw_000.data 来自 philips 的 MRI 机器。但是,我也找不到该区域的任何文档。
我还有什么其他选择?
解决方案
好吧,显然有一种叫做 Little Endian Ordering 的东西。从来不知道它,但幸运的是有一个维基百科页面
https://en.wikipedia.org/wiki/Endianness
当然,我们也可以通过使用 struct 包将这些信息提供给 python,如下所示:
import struct
with open('your_byte_file', 'rb') as f:
A = f.readline()
res = struct.unpack('<f', A)
在这里,<
-sign 告诉我们正在处理 little Endian Ordering,
details。并且f
告诉我们我们期待一个 float, details。
推荐阅读
- reactjs - 尝试转到文章页面时出现问题
- java - 运行 AppEngine 应用程序时出现“87% EXECUTING”消息
- java - 使用 Mocked 类进行 JUnit 测试
- scala - JDK升级NoClassDefFoundError后未加载gradle测试依赖项
- java - 在 Java 中解析通过 TCP 发送的字节数组
- jestjs - 当 beforeEach 钩子中的某些值是虚假的时,如何跳过测试用例?
- keras - 无法导入最新版本的包:Google Colab
- python - Scipy 给出了错误的矩阵乘法结果
- java - 解决 '^M' 或 '\r' 字符行结尾的最佳位置/阶段
- python - 安装python3-dev时的问题