char zu hex konvertieren



  • LowFly deine Dummheit kotzt mich.



  • neomic schrieb:

    ich weiß net warum aber das klappt^^

    Hm, damit sollte man sich nicht zufrieden geben. Nichts gegen die Lösung von net, die ist sehr schick -- aber wenn man sie nicht versteht, sollte man vielleicht erstmal bei den von der STL vorgegebenen Funktionen bleiben, die in jedem guten Anfängerbuch zumindest minimal beschrieben werden:

    inline void put_char(unsigned char c, ostream & out = cout)
    {
        ios::fmtflags old = out.flags(ios::hex);
        out << setfill('0') << setw(2) << static_cast<int>(c);
        out.flags(old);
    }
    
    int main()
    {
        put_char('x');
        cout << endl;
    }
    

    Was hier passiert, sollte mit einer STL-Referenz nachvollziehbar sein.



  • @ 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