Powiedzmy, że mam plik z zawartością:
0a00 910c 4e65 7467
i chcę wydrukować oddzielnie dwie liczby. Moja obecna metoda polega na użyciu printf("%xn", fgetc(file))
. Ale dostaję te wyniki:
- 0
- 91
- do
- 4e
- 65
- 74
- 67
Moje pytanie brzmi: dokąd poszły inne zera? Jak mogę się upewnić, że są one również włączone?
Odpowiedzi:
0 dla odpowiedzi № 1Zawartość pliku jest szesnastkowa. Nie są to „liczby”, ponieważ w każdym z nich jest postać. Nie drukujesz „dwóch liczb”. Drukujesz jeden bajt. The %x
specyfikator jest szesnastkowy.
Kiedy robisz fgetc()
, dostajesz jeden bajt.
Jeden bajt jest reprezentowany przez dwie liczby szesnastkowe. Dzieje się tak, ponieważ może mieć jeden bajt 256
wartości podczas gdy jedna liczba szesnastkowa jest 16
wartości i dwie liczby szesnastkowe mają łącznie 256
kombinacje.
Znaki są następnie wyświetlane jeden po drugim. 0a
staje się a
. 00
staje się 0
. i tak dalej.