hex wert in dez umwandeln und ascii zeichen zuordnen



  • Hi,

    ich suche ein eine Funktion, die mir einen Hex wert (zb. 36h) in einen dez wert (hier 54) umwandelt, und diesen dann gemäß ascii zeichentabelleden entsprechenden Zeichen (hier N) zuordnet.

    ich weiss, das man das ganze mit 2 switch anweisungen realisieren könnte, aber ich denke ihr als erfahrene User bekommt das eleganter hin als einen switch mit 15 Zeichen für hex -> dec und dann noch mal 255 switches für dec -> ascii zeichen

    Danke



  • Es gibt keinen speziellen Datentyp für HEX-Zahlen. Wenn du z.B. einem unsigned short dein 0x36 zuweist, dann steht da einfach binär deine 0x36 (dez54) drinnen (00000000 00110110). Die ASCII-Repräsentation bekommst du dann durch einen simplen cast:

    #include <iostream> 
    using namespace std; 
    
    void int2bin(int zahl) {
       for(int i = sizeof(int)*8-1; i>=0; i--) 
    		cout <<  ((zahl & (1 << i)) == 0 ? '0' : '1');
    	cout << endl;
    }
    
    int main() { 
      unsigned int s = 0x36;
      cout << "Binaerdarstellung von 0x36: ";
      int2bin(s);
      cout << "ASCII-Interpretation: ";
      cout << static_cast<char>(s); 
      cin.get();
      return 0;
    }
    

    dez54 ist übrigens kein 'N', sondern die '6'

    Edit: Kleiner Fehler beim Syntax Highlighting: keywords werden wohl auch hervorgehoben, wenn sie Teil eines Bezeichners sind.


Anmelden zum Antworten