[C/C++] Char Data zu Int kopieren

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von cIntX, 14. Januar 2008 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 14. Januar 2008
    Char Data zu Int kopieren

    Moin, ich habe folgendes problem: Ich bin zurzeit dabei ein kleines Chat Network zu entwickeln das ganze in C++ und zwar sende ich die ganzen Daten als normale Bytes (D.h. keine structs oder sowas) Ich versende ganz normal ein Header und die Daten hinten dran. Nun habe ich das problem das ich meine Bytes natürlich auch wieder umwandeln muss.

    Code:
    char * CDataParser::ReadString(char * szData) {
     unsigned int * uReadLen = new unsigned int;
    
     printf("Integer Size: %u\n", sizeof(uReadLen));
    
     memcpy(uReadLen, szData, 4);
     szData += 4;
    
     char * szBuffer = new char[(unsigned int)uReadLen + 1];
     printf("Reading String (%u).... ", uReadLen);
     for(unsigned int i = 0; i < (unsigned int)uReadLen; i++) {
     szBuffer[i] = szData[i];
     }
     printf("%s\n", szBuffer);
     return szBuffer;
    }
    Mit diesen Code will ich 4 Bytes von szData in ein unsigned int kopieren, aber ürgendwie sind die zahlen totaler müll. szData beinhaltet die ersten 4 stellen mit "0x05 0x00 0x00 0x00" was normal eine 5 ergeben sollte. Allerdings bin ich im moment total ratlos und hab schon einiges probiert.

    Ich währe sehr dankbar wen mir eine das ganze mal richtig dreht. Es ist wieder mal 7:33, null schlaf und zu viel programmiert. Das übliche halt

    BW an denjenigen der mir eventl. helfen kann.
     
  2. 14. Januar 2008
    AW: Char Data zu Int kopieren

    Hey!

    In C:
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define SOINT (sizeof (int))
    
    int main (void)
    {
     int x = 123456, y = 0, tmp = 0;
     char a[SOINT] = { 0 };
    
     /* Ueberpruefen */
     printf ("x = %i\n", x);
    
     /* Integer zu Char-Array */
     memcpy (a, &x, SOINT);
    
     for (tmp = 0; tmp < SOINT; tmp++)
     printf ("a[%i] = 0x%x\n", tmp, a[tmp]);
    
     /* Wieder zurueck-kopieren */
     memcpy (&y, a, SOINT);
     printf ("y = %i\n", y);
    
     return EXIT_SUCCESS;
    }
    Code:
    kolazomai@inSan3 [~/tmp] 
    > gcc x.c -o x 
    kolazomai@inSan3 [~/tmp] 
    > ./x
    x = 123456
    a[0] = 0x40
    a[1] = 0xffffffe2
    a[2] = 0x1
    a[3] = 0x0
    y = 123456
    kolazomai@inSan3 [~/tmp] 
    > 
    Mfg,

    Kolazomai
     
  3. 14. Januar 2008
    AW: Char Data zu Int kopieren

    Ich werde das mal genauer studieren danke. BW is raus

    Edit:
    - &uReadLen 4261216261 unsigned int

    Das kommt dabei raus, aber da steht nicht 5...


    Edit: Ich weiss mittlerweile was los ist, mit meinem Code wahr garnichts fahlsch aber beim Kopieren der Daten ging einiges schief darum gingen jeweils bytes nach dem null determinator verloren

    ansonsten danke
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.