Ausgeben von Zufallsbytes als Hexadezimal-Zahlen



  • Hallo!

    Ich habe ein Array aus unsigned chars, genaugenommen ist es ein Hashwert.
    Diesen Hashwert möchte ich jetzt als Hexadezimal-Zahl ausgeben.
    Der Hashwert ist 160 Bit lang, das unsigned char Array hat also 20 Elemente.
    Das Ganze soll jetzt in Hexadezimal konvertiert werden, eine Hexadezimalziffer hat 4 Bit informationen, also auf die Länge von 40 Ziffern.

    Wie kann man das Lösen (ich glaube ich brauche nur einen Denkansatz)? Oder gibt es für sowas schon eine fertige Lösung? Ich würde QT verwenden, also ginge es auch wenn hier schon fertige Klassen verfügbar sind.



  • naja in qt kann QString nahezu alles, was du brauchst. du kannst bei arg() angeben, welche zahlenbasis du haben willst.
    qt-code:

    QString zufall2hex(unsigned char daten[20])
    {
      QString hex;
      for (int i=19;i>=0;i--)
        hex+=QString(%1).arg(int(daten[i]),0,16);
      return hex;
    }
    

    in standard-c++:

    string zufall2hex(unsigned char daten[20])
    {
       stringstream str;
       str.setf(ios_base::hex,ios_base::basefield);
       for (int i=19;i>=0;i--)
            str << int(daten[i]);
       return str.str();
    }
    


  • Super!

    Hätte nicht gedacht, dass man ein unsigned char so einfach in int konvertieren kann 😉


Anmelden zum Antworten