我应该如何解码这个字符串

时间:2013-07-06 16:15:14

标签: python string encoding

我正在尝试使用Python读取“.cnt”文件。我的理解是它编码来自脑电图的信息。我以标准方式阅读文件:

file = open("PICS2s8.cnt","rb") #I get the same results with 'r' instead of 'rb'
data = file.readlines()

当我检查文件的第一行时,我看到:

'Version 3.0\x00\xe3\x00J\x04\x00\x00\x00\x00\x02\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\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\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\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\x00UU\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0013/10/05\x00\x0011:28:07\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80?\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf2\x02\x00\x00\x00\x00\x00\x10\'\x01\x00\x00\x00\x00\x00\x8b\x02 \x00\x01\x00\x00\x00\xf4\x01\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00 A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x003\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00zD\x00\x00\x00\x00\x00\xcd\xcc\xcc\xbd\x00\x00\x00\x00\x00\xcd\xcc\xcc\xbd\x9a\x99\x99?\x00\x00H\xc2\x00\x00HB\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80>\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xc2\x00\x00\xf0B\xcd\xcc\xcc\xbd#\xdb\x99?\xcd\xcc\xcc\xbd#\xdb\x99?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\xcc\xcc\xbd\x9a\x99\x99?\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\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\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\x01\x00\x00\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00ffF@\xc8\x00d\x00\x9c\xff\xf4\x01ffF@\x8f\xc2\xf5<\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\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\x00\x00\x00\x00\xfa?\x10\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2p}B\xb5\x1e\x8eA\x01\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\x00\x00\x00\x00\x00\x00\x00\xc7\xfc\xff?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xe4\xc8I\x04\x00\x00\x00\x00\x01\x00\x00\x00\x00PO2\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x01\x01\x00\x01\x00\x00\x00)\\\xa7C\xd3\xcd3C\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\x00\x80\x89A\x03\x00\x00\x00\x00\x1d\x00\x00\x15t\x84?O1\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x01\x01\x00\x01\x00\x00\x00ff6C/\xbd4C\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\x00\x80\x89A\x03\x00\x00\x00\x00\x0e\x01\x00\x16\xf0\x83?M2\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x01\x01\x00\x01\x00\x00\x00\x90\xc2\xf5@\x83\xe0/C\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\x00\x80\x89A\x03\x00\x00\x00\x00\x06\x02\x00K9\x84?PZ\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x01\x01\x00\x01\x00\x00\x00\xebQ\x80C\x1b\x8f\x1aC\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\x00\x80\x89A\x03\x00\x00\x00\x00\x06\x03\x00\x15t\x84?P4\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x01\x01\x00\x01\x00\x00\x00)\\\xa7C\xfa\xbe\x1aC\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\x00\x80\x89A\x03\x00\x00\x00\x00\x05\x04\x00\xdc\xbd\x84?CP4\x00\x00\x00\x00\x00\x00\x00\xff\x00\x01\x01\x00\x01\x00\x00\x00R\xb8\xa6CZd\xfdB\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\x00\x80\x89A\x03\x00\x00\x00\x00\x07\x05\x00H\xea\x84?P8\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x01\x01\x00\x01\x00\x00\x00\x90\xc2\xcdC\xfa\xbe\x1aC\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\x00\x80\x89A\x03\x00\x00\x00\x00\x0b\x06\x00\x15t\x84?C4\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x01\x01\x00\x01\x00\x00\x00\x90\xc2\xa5CJ\x0c\xc3B\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\x00\x80\x89A\x03\x00\x00\x00\x00\x05\x07\x00Q\xc4\x83?TP8\x00\x00\x00\x00\x00\x00\x00\xff\x00\x01\x01\x00\x01\x00\x00\x00\xa4p\xcdCZd\xfdB\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\x00\x80\x89A\x03\x00\x00\x00\x00\x06\x08\x00\xf8G\x84?T8\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x01\x01\x00\x01\x00\x00\x00\xb8\x1e\xcdCJ\x0c\xc3B\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\x00\x80\x89A\x03\x00\x00\x00\x00\x05\t\x00\x1em\x83?P7\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x01\x01\x00\x01\x00\x00\x00q=\xcaB\xfa\xbe\x1aC\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\x00\x80\x89A\x03\x00\x00\x00\x00"\n'

我担心我真的不知道如何开始理解这一点。我对ascii字符串值和字节值的混合感到困惑。我试过了:

data[0].decode('utf-8')

data[0].decode('utf-16')

但都引发了错误。

我也试过

from struct import unpack, calcsize
file.seek(0)
chunk = file.read(calcsize('25c'))
read_chunk = unpack('25c',chunk)

得到了结果:

('V', 'e', 'r', 's', 'i', 'o', 'n', ' ', '3', '.', '0', '\x00', '\xe3', '\x00', 'J', '\x04', '\x00', '\x00', '\x00', '\x00', '\x02', '\x00', '\x00', '\x00', '\x00')

我有什么明显的遗失吗?

2 个答案:

答案 0 :(得分:0)

它是带有嵌入式ASCII字符串的二进制格式。它是一种专有格式,您必须使用struct和大量代码自行解析C数据结构。

也许你最好转换格式或使用第三方Python库;使用this script将文件转换为.h5格式(可与matlab一起使用)(Python代码,使用numpy):

$ python cnt2h5 PICS2s8.cnt

会生成PICS2s8.h5个文件。

答案 1 :(得分:0)

嗨回答这个问题可能为时已晚,但以下是关于\ x00字符的额外填充的发现:

当您使用某些块加密方法对任何字符串进行编码时,它会将空填充添加到字符串中,以使其可编程/加密技术的块大小的倍数。

例如,如果您的加密机制是16字节且字符串是12字节,则加密机制将向字符串添加4字节空填充,然后对其进行加密。因此,当您解密它时,您会在字符串的末尾获得额外的空填充。

以下是基于PHP的AES加密的更多解释:http://www.chilkatsoft.com/p/php_aes.asp