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.