System::String zu char* für ALLE Zeichen?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • System::String^ zu char* für ALLE Zeichen?

    IDE: Visual Studio C++ 2005 (nein, komme ich leider nicht drumherum -.-)

    Servus. Mal wieder habe ich ein Problem in der Theorie gelöst und möchte die Lösung gerne implementieren. Jedoch machen mal wieder die DatenTypen Probleme:

    Ich bekomme einen String von einem Gerät an der seriellen Schnittstelle. In diesem String sind floats binär codiert (4 Byte standard IEEE float halt), ergo: Zeichensalat.

    Macht aber eigentlich nix, denn: ich brauche "nur" einen float-Zeiger auf die Stelle in einem char-Array zeigen zu lassen, wo der float zu stehen hat und schon habe ich nach dem Dereferenzieren den richtigen Wert.

    Eigentlich müsste ich nur den String in ein char-Array umbasteln. Das erledigt folgende Funktion, die den dem char-Typ eigenen Parser nutzt:

    Quellcode

    1. char tempchar [28];
    2. String^ buffer = "Irgendwas ausm Gerät";
    3. for (int i=0; i<28; i++)
    4. {
    5. tempchar[i] = char::Parse(buffer->Substring(i, 1));
    6. }


    Problem: einige (also fast alle) der Zeichen die ich konvertiere sind irgendwelche Sonderzeichen, da es sich ja um Binärdaten handelt. Ich bekomme im unten angehängten Beispielstring ab dem 3. Zeichen (seltsam genug, denn das ist ein sauberes Standard-ASCII-Leerzeichen) eine "System.FormatException".



    Also, nochmal kurz: ich haben eine willkürliche Bitfolge als String und muss sie in ein char-Array umwandeln. Es muss performant sein, da es pro sekunde einige hundertd Male geschehen soll.

    Ein String, der umzuwandeln ist sieht beispielsweise so aus:


    01 ×÷@ô%ç?4Ç¿±ªB«¬qAzTˆA


    Für den Fall, dass es durch HTML zerstört wird, der Text nochmal in Hex:


    30 31 20 d7 f7 0e 40 f4 25 e7 3f 34 1b c7 bf 06 b1 aa 42 ab ac 71 41 7a 54 88 41 00




    Help Plz. :(
    Hey morons, let's get a move on before the other moron does something especially moronic.