我想从二进制文件读取字节,但没有成功。 我已经尝试了很多解决方案,但没有得到结果。 结构文件:在C++中读取字节
[offset] [type] [value] [description]
0000 32 bit integer 0x00000803(2051) magic number
0004 32 bit integer 60000 number of images
0008 32 bit integer 28 number of rows
0012 32 bit integer 28 number of columns
0016 unsigned byte ?? pixel
0017 unsigned byte ?? pixel
........
xxxx unsigned byte ?? pixel
我怎样努力(不工作):
auto myfile = fopen("t10k-images.idx3-ubyte", "r");
char buf[30];
auto x = fread(buf, 1, sizeof(int), myfile);
的部分地方说“MSB第一”是非常重要的。 –
“不成功”是什么意思?我相信这应该将sizeof(int)字节读入缓冲区。读取后应检查x以确保它等于x == sizeof(int)。尝试打印出十六进制缓冲区,看看它是否正确读取它。 –
我猜这个问题是endianess。如果磁盘上的“int”是大端,并且系统是小端,那么这些数字将不匹配。 –