Convert char to unsigned char



  • Hallo Alle zusammen,

    kann mir jemand sagen wie ich aus einem Char wert[2]
    eine unsigned char wert1[] machen kann. Ich habe leider nichts gefunden was mir helfe kann



  • char a[];
    unsigned char b = *a;
    unsigned char c = static_cast<unsigned char>(*a);
    unsigned char* d = reinterpret_cast<const unsigned char*>(a);
    

    Such dir was aus



  • Danke erst Mal das du so schnnell geantwortet hast.
    es funktioniert zwar aber mein char ist [4] und wenn ich es in unsigned versuche also
    usigned chat test [4]= *wert; funktioniert e nicht



  • Dann zeig mal den ganzen Code. Du hast also ein char array? Vielleicht solltest du wissen, dass char und unsigned char im Prinzip das selbe ist, wie int und unsigned int. Die Bitfolge wird einfach anders interpretiert. Daher kannst du einer char variable den wert einer unsigned char variable zuweisen und umgekehrt. Daher dürfte es da keine Probleme geben.



  • also ich habe in meinem Wert
    char wert [4];
    dann lese ich mit ifstream read in diesem wert bytes ein. In wert[3]= "-70"
    das ist ein short wert jetzt wollte ich
    unsigned char test [4] = *wert
    ich würde gerne alle 4 bytes hier einlesen



  • sdfsdf schrieb:

    Daher kannst du einer char variable den wert einer unsigned char variable zuweisen und umgekehrt. Daher dürfte es da keine Probleme geben.

    Erzähl doch keinen Quatsch. Erst einmal gibt es 3 versch char-Typen: char, signed char und unsigned char, wobei char entweder vorzeichenbehaftet oder vorzeichenlos ist (kommt auf Deinen Compiler drauf an). Dann sieht es so aus, dass die Konvertierung einer Ganzzahl x (beliebigen Typs) in eine vorzeichenbehaftete Zahl nur dann definiert ist, falls x im Zieltypen darstellbar ist. Andernfalls ist das Ergebnis auch abhängig vom Compiler bzw Rechner.

    borhany schrieb:

    also ich habe in meinem Wert
    char wert [4];
    dann lese ich mit ifstream read in diesem wert bytes ein. In wert[3]= "-70"
    das ist ein short wert jetzt wollte ich
    unsigned char test [4] = *wert
    ich würde gerne alle 4 bytes hier einlesen

    Der "Wert" ist das, was durch den Zustand eines Objektes repräsentiert wird. Bei Dir ist "wert" ein 4-elementiges char-Array (und kein "Wert"). Was das mit wert[3]="-70" und "short wert" soll, weiß ich nicht. Was bezweckst Du denn mit

    unsigned char test [4] = *wert
    

    ? Was meinst Du mit "ich würde gerne alle 4 bytes hier einlesen"? Sprich mal Klartext, bitte.

    Gruß,
    SP



  • char wert[4];
    wert[3]= "-70"
    

    Entweder musst du ein array aus strings nehmen oder ein array aus zeigern aus chars. Du kannst keinem char ein C-String zuweisen.



  • borhany schrieb:

    also ich habe in meinem Wert
    char wert [4];
    dann lese ich mit ifstream read in diesem wert bytes ein. In wert[3]= "-70"
    das ist ein short wert jetzt wollte ich
    unsigned char test [4] = *wert
    ich würde gerne alle 4 bytes hier einlesen

    Du musst das kopieren. Entweder über strcpy() (kommt aus C) ins Array übertragen oder nimm gleich std::string. Wenn wir wüssten was das werden soll könnte man Dir besser helfen 🙂
    lg


Anmelden zum Antworten