'train-images-idx3-ubyte'파일을 읽으려고합니다. 해당 파일 형식 설명과 함께 here을 찾을 수 있습니다 (웹 페이지 하단). 내가 od -t x1 train-images-idx3-ubyte | less
(16 진수 바이트 단위)와 바이트를 볼 때, 나는 다음과 같은 출력을 얻을 : 이것은 1에 따라 기대했던비트 읽기 퍼즐 (C++에서 이진 파일 읽기)
adress bytes
0000000 00 00 08 03 00 00 ea 60 00 00 00 1c 00 00 00 1c
0000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
...
입니다. 그러나 C++로 데이터를 읽으려고하면 문제가 생깁니다.
std::fstream trainingData("minst/train-images-idx3-ubyte",
std::ios::in | std::ios::binary);
int8_t zero = 0, encoding = 0, dimension = 0;
int32_t samples = -1;
trainingData >> zero >> zero >> encoding >> dimension;
trainingData >> samples;
debugLogger << "training set image file, encoding = "
<< (int) encoding << ", dimension = "
<< (int) dimension << ", items = " << (int) samples << "\n";
그러나 이러한 코드 몇 줄의 출력은 다음과 같습니다 : 내가 할 것은 이것이다
training set image file, encoding = 8, dimension = 3, items = 0
제외한 모든 인스턴스 (항목, 샘플)의 수는 정확합니다. 나는 다음 4 바이트를 int8_t로 읽으려고했지만 적어도 최소한 od
과 같은 결과를 얻었다. 나는 samples
이 0 일 수있는 방법을 상상할 수 없다. 내가 실제로 여기에서 읽고 싶었던 것은 10,000이었다. 어쩌면 당신은 단서가 있습니까?
, 당신은 포맷되지 않은 사용되어야합니다 : 당신은 인텔 기반 컴퓨터에서 실행하는 경우 입력. – ildjarn
은 이진 입력을 위해'istream :: read()'또는'istream :: get()'또는'istreambuf_iterator'를 사용합니다. –