Wczytywanie 2 bajtów z pliku

Odpowiedz Nowy wątek
2011-08-04 21:11
bob34
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);

Pozostało 580 znaków

2011-08-04 22:55
0

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

Pozostało 580 znaków

2011-08-04 22:56
bob34
0

Dostaję 2304 zamiast 9.

Pozostało 580 znaków

2011-08-04 23:08
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.

Pozostało 580 znaków

2011-08-05 09:29
Kumashiro
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).

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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