Forum: PC-Programmierung Datei lesen mit hexa


von Julietta O. (eiskalt)


Lesenswert?

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

von Bernhard M. (boregard)


Lesenswert?

x86 Architektur speichert little-endian, auf big-endian Systemen sieht 
das genau andersherum aus...

siehe [[http://de.wikipedia.org/wiki/Big-endian]]

von yalu (Gast)


Lesenswert?

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.

von Julietta O. (eiskalt)


Lesenswert?

Ah! ok danke

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
Noch kein Account? Hier anmelden.