char zu hex konvertieren



  • @ jester
    ja hab ich und ich hab auch verstanden das du weist das sie fehlerfrei sind das bezog ich auch nur darauf weshalb ich es ernst meine.

    @ hexx
    was dich ankotzt is nich mein problem, da du noch nichtmal den mut hast sowas als registrierter zu posten kann ich dich nicht ernst nehmen. viel spaß beim sachen waschen. hoffe für dich du hast nichts deftiges gegessen. sonst haste probleme das zeug aus der tastatur zu kriegen 😃



  • LowFly schrieb:

    @ jester
    ja hab ich und ich hab auch verstanden das du weist das sie fehlerfrei sind das bezog ich auch nur darauf weshalb ich es ernst meine.

    okay, das läßt tief blicken.



  • char ch = 'Ö'; //hexausgabe  char
        cout << noshowbase << hex << static_cast<int>(static_cast<unsigned char>(ch)) << endl;
    


  • so weit so gut 🙂

    #include <iostream>
    using namespace std;
    string CharToHex(char ch){
        char hex[3];
        sprintf(hex,"%.02x",static_cast<int>(static_cast<unsigned char>(ch)));
        return hex;
    }
    int main(){
        string text;
        cin>>text;
        for(int i=0;i<text.size();i++){
            cout<<CharToHex(text[i])<<",";
        }
        return 0;
    }
    

    problem: der will die leerzeichen net als hexwert ausgeben... kann ich das auch noch irgenwie lösen? 🙂



  • Erstens: Du brauchst die ganzen Cast's nicht, um den char an sprintf() weitergeben zu können.

    Zweitens:

    neomic schrieb:

    problem: der will die leerzeichen net als hexwert ausgeben... kann ich das auch noch irgenwie lösen? 🙂

    istream::operator>> verwendet Leerzeichen als Endemarke für die Eingabe (und leitet sie nicht weiter). Aber du könntest stattdessen mit getline() einlesen (das liest bis zum ENTER).



  • ersetze:

    cin>>text;
    

    gegen

    getline (cin, text);
    


  • gut klappt alles perfekt mittlerweile 🙂 (thx 2 the community :D)

    nun möchte ich noch hex zahlen in buchstaben umwandeln:

    string HexToChar(int hex){
        char ch[2];
        sprintf(ch,"%c",hex);
        string ch2 = ch;
        return ch2;
    }
    

    sie wird zb mit:

    HexToChar(0x61)
    

    angesprochen und man erhält das richtige ergebnis ("a")

    ich möchte aber die hex zahl als string übergeben und als einfacher char zurückerhalten oder gibt es da vll noch bessere lösungswege?

    *greeetz* 🤡



  • Einfach die Zahl als string übergeben und dann nach in umwandeln
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39488.html



  • ich versteh das noch net so...

    der buffer in sprinf muss ja char* sein aber wie geb ich den als einzelnen buchstaben wieder zurück? und wie nimmt das argument nen string an bzw die hexzahl?



  • neomic schrieb:

    string HexToChar(int hex){
        char ch[2];
        sprintf(ch,"%c",hex);
        string ch2 = ch;
        return ch2;
    }
    

    sie wird zb mit:

    HexToChar(0x61)
    

    angesprochen und man erhält das richtige ergebnis ("a")

    probier dies:

    string HexToChar (int hex)
    {
       char ch[3];
       sprintf(ch,"%02x",hex);
       return string(ch);
    }
    

    ach so, doch nicht 😞

    dann so

    string HexToChar (int hex)
    {
    	char ch2[] = {hex, 0};
    	return string(ch2);
    }
    

    😉



  • sry net, möchte aber den string übergeben (net die hexzahl 😞 )und als char zurückerhalten, weil ich net weiß wie ich die "0x" dann vor die zahlen bekomme, also hätte ich das lieber als string z.b. "FF" = "255" = "ÿ"

    also so ähnlich (wenns möglich ist):

    char HexToChar(string hex)
    


  • sowas vielleicht?

    char HexToChar (string hex)
    {
       char *p;
       return (char)strtoul(hex.c_str(), &p, 16);
    }
    

    müsste mit oder ohne '0x' am anfang gehen...



  • net schrieb:

    sowas vielleicht?

    char HexToChar (string hex)
    {
       char *p;
       return (char)strtoul(hex.c_str(), &p, 16);
    }
    

    müsste mit oder ohne '0x' am anfang gehen...

    kewl ;), wenn du mir das jetzt noch erklärst wie der zum char wird.. 😃 (ich versteh das mit dem char net)


Anmelden zum Antworten