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.


Anmelden zum Antworten