Hallo Leute, ich habe eine folgende datei 0x322e3031 da sind die daten, was im datei.dat stehen und mit folgende Code wollte ich die Daten lesen ______________________________________ #include<stdio.h> #include<stdlib.h> typedef unsigned char int8 int main (){ FILE *datain_fp; int8 datain[100]; int i; datain_fp = fopen("../datei.dat","r"); if(datain_fp !=0){ fscanf(datain_fp,"%x",datain); prinft("datain 0: %x \t datain 1: %x \t datain2: %x \t datain3: %x", datain[0],datain[1],datain[2],datain[3]) } return 0; } _________________________________________ leider bekomme ich dieses Ergebnis datain0 = 31 datain1 = 30 datain2 = 2e datain3 = 32 Also genau andersrum mit was ich gedacht habe. datain0 = 32 datain1 = 2e datain2 = 30 datain3 = 31 ich bedanke mich wenn ihr mir weiter helfen könnt. Gruß Julietta
x86 Architektur speichert little-endian, auf big-endian Systemen sieht das genau andersherum aus... siehe [[http://de.wikipedia.org/wiki/Big-endian]]
Es ist nicht die feine Englische, der fscanf-Funktion an Stelle des erwarteten int-Pointers einen int8-Pointer zu übergeben. Wenn die Zahl unbedingt in einzelne Bytes zerstückelt werden muss, würde ich das nach dem Einlesen tun.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.