Ispis brojeva iz binarne datoteke

Ispis brojeva iz binarne datoteke

offline
  • Pridružio: 11 Okt 2014
  • Poruke: 358

U binarnoj datoteci numbers.dat nalazi se određeni broj (najviše 100.000) nenegativnih cijelih brojeva u opsegu 0-65535 predstavljenih sa po dva bajta.
Potrebno je ispisati brojeve iz datoteke na ekran:
OUTPUT:
1 2 1 4 2 4 2 2 3 4 2
Kod:
#include <stdio.h> #include <stdint.h> int main() {   const char file[] = "numbers.dat";   FILE *fp = fopen(file, "rb");   uint16_t arr[100000];   int i;   int loaded=fread(arr, 2, 100000, fp);   printf("Loaded numbers: %d\n", loaded);   for (i = 0; i < loaded; i++)     printf("%d ", arr[i]);   fclose(fp);   return 0; } }

Ako brojeve 12142422342 pretvorim u binary to će biti: 11011001010010101110010 (konvertujem ih jedan po jedan) i pokrenem program dobijam output:

Loaded numbers: 11

12593 12592 12337 12592 12592 12336 12337 12337 12593 12337 12592


Kako mogu učitati brojeve predstavljene u dva bajta?



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 11 Okt 2014
  • Poruke: 358

Napisano: 06 Mar 2022 15:46

Malo sam popravio kod, ali još ne dobijam tačan rezultat...



offline
  • Pridružio: 11 Okt 2014
  • Poruke: 358

Ako se brojevi pretvore u hex format, predstave svaki po dva bajta, i zapišu u binary file, taj file će izgledati ovako:


i kada pokrenem program dobijam tačan rezultat.

offline
  • dmn  Male
  • Novi MyCity građanin
  • Pridružio: 02 Sep 2013
  • Poruke: 1

Postoje 2 standarda čuvanja brojeva u binarnom obliku, big i little endian, npr broj 1000 je u hex 00 00 03 E8 ("veći" bajtovi su lijevo), ili E8 03 00 00 ("veći" bajtovi su desno), u zavisnosti koji standard se koristi. Konkretno, windows koristi jedan standard, Mac/Linux koriste drugi.
Ako je binarni fajl složen onako kako ga očekuješ, tvoj kod bi trebao da radi, u suprotnom, morao bi ručno preslagati bajte.

offline
  • Pridružio: 11 Okt 2014
  • Poruke: 358

hvala puno

Ko je trenutno na forumu
 

Ukupno su 369 korisnika na forumu :: 5 registrovanih, 1 sakriven i 363 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: anta, Dorcolac, opt1, Parker, Prometeus