我有一个关于阅读 MNIST 数据集的问题。我了解了如何构建 MNIST 数据集。但是,我不知道它是如何读取以下代码的。你们中的一些人可能认为 couts 的结果是显而易见的(我写了 values 作为评论)。但是对我来说这没有意义,因为它使用相同的输入四次使用相同的确切功能,但每次都会得到不同的输出。这怎么可能?如果我的问题有任何歧义,请告诉我。
谢谢你。
代码开始:
typedef unsigned char BYTE;
int main()
{
...
FILE *fp = fopen("MNIST/train-images.idx3-ubyte", "rb");
// delcare function;
int magicNumber = readFlippedInteger(fp);
int numImages = readFlippedInteger(fp);
int numRows = readFlippedInteger(fp);
int numCols = readFlippedInteger(fp);
cout << magicNumber << endl; // 2051
cout << numImages << endl; // 60000
cout << numRows << endl; // 28
cout << numCols << endl; // 28
...
}
int readFlippedInteger(FILE *fp)
{
int ret = 0;
BYTE *temp;
temp = (BYTE*)(&ret);
fread(&temp[3], sizeof(BYTE), 1, fp);
fread(&temp[2], sizeof(BYTE), 1, fp);
fread(&temp[1], sizeof(BYTE), 1, fp);
fread(&temp[0], sizeof(BYTE), 1, fp);
return ret;
}