Wczytywanie 2 bajtów z pliku

0

Witam,

mam plik, w którym są zapisane 3 bajty. Pierwszy bajt jest nieważny i mogę go wyrzucić, ale następne chciałbym pobrać do inta (to jest liczba). Dlaczego więc taki kod nie działa :?:

 int ile = 0;
//...

czytaj.get();
czytaj.read(reinterpret_cast<char*>(&ile), 2);
0

co to znaczy "nie działa"? wywala się? ładuje zero? ładuje inną liczbę niż się spodziewasz?

0

Dostaję 2304 zamiast 9.

0

czyli prawidłowo dostajesz. jesteś pewien że ma być 9?
twój problem wynika z tego, że jako pierwszy powinien być zapisywany najmniej znaczący bajt liczby. skoro jest odwrotnie, to znaczy że plik jest zapisywany albo źle, albo pod jakimś Macintoshem starym lub innym dziwolągiem.
W każdym razie, trzeba odwrócić kolejność bajtów.

0

Nie musi być zapisywany źle, ani pod "jakims starym Macintoshem". Endianess jest określany przez format pliku i plik BE na architekturze LE nie jest błędem. Są nawet formaty mieszane (o ile dobrze pamiętam, RIFF miał jakieś pola nagłówka w BE, a reszta w LE).

1 użytkowników online, w tym zalogowanych: 0, gości: 1