Wie liest genau ein byte einer Binärdatei in C++

Ich versuche, ein Lesen eines Bytes aus einer binären Datei und erhalte ich ungenaue Ergebnisse.

Dies ist der Inhalt der binary-Datei:

00000000 00 04 0A 07 00 00 00 00 00 00 74 00 00 00 00 61 69 6E 62 6F 77 00 ..........t....ainbow.

Der Punkt ist, dass ich Lesen kann, mehr als ein byte, aber ich kann einfach nicht Lesen, genau ein byte. Wenn versucht, Lesen Sie das Dritte byte 0A die gleich 10, sondern es gibt mir einen Wert von 32522 oder in hexadezimaler 7F0A. Was vermisse ich hier?

#include <iostream>
#include <fstream>
#include <cstring>
#include <fstream>

using namespace std;

int main()
{
    fstream file("foo.daf", ios::in | ios::out | ios::binary);

    file.seekg(2);

    int x;

    file.read(reinterpret_cast<char *>(&x), 1);

    cout<<x<<endl;

    return 0;
}
  • Es scheint, wie Sie gehen über es der falsche Weg.unsigned char x; file >> x;
  • char c; if(file.get(c)) { /* read was successful, use c */ }
  • Ich bezweifle, dass eine formatierte input-Funktion werden die gewünschten Ergebnisse zu erreichen. Im Fall von diesem speziellen Charakter, es wird definitiv nicht.
  • dies scheint zu sein, eine C++ Frage, also warum ist es markiert auch C?
InformationsquelleAutor user3764893 | 2014-12-30
Schreibe einen Kommentar