Forum: PC-Programmierung double-Wert aus .dat-Datei lesen


von mr08b002 (Gast)


Lesenswert?

Hallo,

ich habe eine .dat-Datei eines Datenloggers in der kryptische Zeichen 
drinnenstehen. Bei genauerer Betrachtung mit einem Hex-Editor konnte ich 
herausfinden, dass es sich dabei um double-Werte handelt. Nun möchte ich 
die Daten mit einem Programm (in C) einlesen und in leserlicher Form 
wieder in ein Textfile speichern.

Da ich keinen Befehl gefunden habe der direkt double-Werte einlesen kann 
habe ich die char-Eingelesen. Nun habe ich 8-char-Variablen die die 
binärwerte enthalten.

Diese wollte ich mit Binäroperatoren (oder) in die double Variable 
schreiben und dann mit << an die richtige Stelle in der double Variable 
schieben. Das funktioniert allerdings nicht weil man auf Gleitkommawerte 
anscheinend keine Binäroperatoren anwenden kann.

Ich hoffe ihr versteht was ich machen will.


char c[0] = 20;  //00010100
char c[1] = 174; //10101110
char c[2] = 176; //10110000
char c[3] = 87;  //10110000
char c[4] = 93;  //10110000
char c[5] = 232; //10110000
char c[6] = 123; //10110000
char c[7] = 64;  //10110000

...

daraus soll eine double Variable werden:

double result = 4.465e+02 //entspricht: 00010100 10101110 10110000 ...

von (kein) (Gast)


Lesenswert?

mr08b002 schrieb:
> Da ich keinen Befehl gefunden habe der direkt double-Werte einlesen
fscanf()

von Peter II (Gast)


Lesenswert?

wenn es wirklich das double format von C ist kannst du einfach

double d
read( filehandle, &d, sizeof(d) )

machen.

von ... (Gast)


Lesenswert?

Eventuell so?
1
double result = *(double*)c;
Hab jetzt nicht nach der Byteorder geschaut, eventuell mußt Du die 
hierfür im Array umdrehen.

von (kein) (Gast)


Lesenswert?

(kein) schrieb:
> mr08b002 schrieb:
>> Da ich keinen Befehl gefunden habe der direkt double-Werte einlesen
> fscanf()
Unfug, dafür müssten die Zahlen menschenlesbar sein. Sry.

von ... (Gast)


Lesenswert?

(kein) schrieb:
> (kein) schrieb:
>> mr08b002 schrieb:
>>> Da ich keinen Befehl gefunden habe der direkt double-Werte einlesen
>> fscanf()
> Unfug, dafür müssten die Zahlen menschenlesbar sein. Sry.
Noch mehr Unfug, sie müßten als Text (und damit "menschenlesbar") 
vorliegen.

von (kein) (Gast)


Lesenswert?

... schrieb:
> (kein) schrieb:
>> (kein) schrieb:
>>> mr08b002 schrieb:
>>>> Da ich keinen Befehl gefunden habe der direkt double-Werte einlesen
>>> fscanf()
>> Unfug, dafür müssten die Zahlen menschenlesbar sein. Sry.
> Noch mehr Unfug, sie müßten als Text (und damit "menschenlesbar")
> vorliegen.
Genau das meinte ich.

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.