uint8_t* in Char Array



  • Guten Tag
    ich hoffe ich bin hier richtig:
    von einem Socket bekomme ich den empfangene Nachricht. Allerdings ist dieser im uint8_t* Format.
    Möchte allerdings damit weiterarbeiten (z.B. mit anderen chars vergleichen). Also müsste das ganze in ein Char Array oder ein String umkonvertiert werden.
    Per Google habe ich leider keine Lösung gefunden.



  • Die sicherste Lösung ein uint8_t Array in ein char Array zu konvertieren ist es, jedes Element des uint8_t Arrrays durchzugehen, zu casten und dem char Array zuzuweisen.



  • Dazu musst du das Protokol kennen, welches definiert wie die Empfangenen Daten (in Form von einem Byte Buffer) interpretiert werden müssen. Im Byte Buffer könnten 4-Byte Integer stehen, aber auch ein String, bestehend aus 2-Byte Characters etc.

    Ausserdem, falls die Kommunkikation über ein TCP Socket läuft musst du für das Framing sorgen. D.h. du musst durch die vom Protokoll vorgegebene Regel bestimmen, wann eine Meldung komplett ist und diese dann verarbeiten.



  • Also du meinst so:

    char test[100];
    uint8_t* msg = (uint8_t*)malloc(size);
    size = client.read(msg,size);
    for(int i = 0; i != size; i++)
    {
       test[i] = msg[i];
    }
    

    Wenn ja dann funktioniert es nicht. bekomme immer nur "?" raus.



  • audacity363 schrieb:

    Wenn ja dann funktioniert es nicht. bekomme immer nur "?" raus.

    Was erwartest du denn? Und warum erwartest du es so?



  • ich erwarte als Beispiel "Hello World". Warum es so erwartet wird.. keine Ahnung. Ist so von der Library vorgeschrieben.



  • Die Library (welche auch immer) wird dir dann ja wohl auch vorschreiben wie die Pakete aussehen, und welches Encoding strings haben.


Anmelden zum Antworten