/ / W tym zera w fgetc - c, fgetc

W tym zera w fgetc - c, fgetc

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 № 1

Zawartość 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.