我正在玩MNIST数据集,我遇到了以下情况,我不太明白。根据文档,数据的格式如下:
[offset] [type] [value] [description]
0000 32 bit integer 0x00000801(2049) magic number (MSB first)
0004 32 bit integer 60000 number of items
0008 unsigned byte ?? label
0009 unsigned byte ?? label
........
xxxx unsigned byte ?? label
The labels values are 0 to 9.因此,我预计字节数为4-8,对应的项目数(60,000)为:
struct.pack('i', 60000)
>> '`\xea\x00\x00'但是,当我逐字节读取文件时,它们看起来是相反的顺序:
with gzip.open(path_to_file, 'rb') as f:
print struct.unpack('cccc', f.read(4))
for i in range(4):
print struct.unpack('c', f.read(1))
>> ('\x00', '\x00', '\x08', '\x01')
>> ('\x00', '\x00', '\xea', '`')显然,我可以反转它们以得到预期的顺序,但我不明白为什么字节看起来会反转。
发布于 2016-11-07 23:10:33
这是一个字内字节排序的工件。数据被格式化为整数,所以您必须这样读取它。这是“小终端”寻址,最小(最早)的地址有最小的字节。注意,在第一个字段中,指定的格式是"MSB“。
https://stackoverflow.com/questions/40476294
复制相似问题