Konvertierung Integer in 2-Byte-Wert / Erzeugen eines Streams



  • Hallo!

    Ich bin grad wohl etwas vernagelt, aber ich komm grad nicht weiter.

    Zur Erzeugung eines Socket-Streams will ich einen Integer-Wert an den Anfang eines char-Pointers (also an die Speicherstelle) speichern (danach kommt dann die Nachricht selbst).

    Die Frage ist, wie ich das anstelle?

    buffer=(char*) malloc(length+strlen(nachricht));
    

    Und dann? 😮

    Dass dann das hier folgt, weiß ich ja wieder...

    buffer+=2;
    strcpy(buffer,nachricht);
    

    Fehlen nur noch die 2 Bytes mit dem Integerwert am Anfang.

    Wäre für eine Antwort sehr dankbar...

    - stevieboy -



  • machs mit memset
    Speicher den int-Wert in ein char-Array und dieses setzt du dann an den Anfang
    der Nachricht!



  • Hö?

    Meinst mit memset die zwei Bytes einzeln kopieren?

    Dann doch lieber memcpy 😃

    oder

    buffer[0] = (my_int & 0xff00) >> 8;
    buffer[1] = (my_int & 0xff);



  • char* nachricht = "ich bin ein string";
    int length = sizeof(int);
    char* buffer =(char*) malloc(length+strlen(nachricht)+1);
    *(int*)buffer=1234;
    strcpy(buffer+length,nachricht);
    printf("%d %s\n", *(int*)buffer, buffer+length);
    

    Output: 1234 ich bin ein string


Anmelden zum Antworten