Double in Array identifizieren
-
Hallo zusammen,
Über einen Socket wird mir ein char Array vollgeschrieben. Aus diesem Array muss ich 6 double Werte auslesen. Weiß jemand eine schnelle, saubere Möglichkeit wie ich das tun kann?
Gruss,
flambert
-
Ich würde sagen, du musst die Werte wieder so zusammensetzen, wie sie vor dem Versenden auseinandergepflückt wurden. Eventuell klappt es schon, wenn du mit einem double-Zeiger auf deinen char-Puffer zeigst (wenn die Reihenfolge der Bytes nicht passt, musst du halt selbst zusammensetzen).
-
Ich habe es jetzt einmal so probiert:
char buffer[]="<Sen X=\"12\"/>; int i; sscanf(buffer,"%*s%*s%d",i);
Das funktioniert leider nicht, weil zwischen den chars und dem Interger kein Space ist. Das hier würde z.B. funktionieren:
char buffer[]="<Sen X=\" 12 \"/>; int i; sscanf(buffer,"%*s%*s%d",i);
Aber leider kann ich das char array nicht ändern. Hat jemand eine Ahnung wie man sscanf dazu bekommt trotzdem den Integer zu erkennen?
Dank und Gruß,
flambert
-
Hallo
Du kannst das ja immernoch manuell parsen : Mit den AnsiString-Funktionen suchst du nach dem Trennzeichen, das den Anfang der Zahlen kennzeichnet. Dann kannst du weitergehen, bis die erste Nicht-Ziffer das Ende der Zahl kennzeichnet. Den Teil dazwischen extrahierst du und wandelst mit StrToInt oder StrToFloat um.
bis bald
akari
-
eine double besteht aus 64 bit, also 8 chars zu 8bit. du kannst die bitwerte aus der double auslesen und in deine 8 chars speichern, zum auslesen must du das nurnoch umkehren.