Hexadezimalwert splitten



  • Hallo ich habe folgendes Problem und bin leider noch nicht auf die entsprechende Seite mit der Lösung gestoßen.

    ich habe eine Variable int var. Der Inhalt sind 8 hexadezimalwerte welche aneinandergereiht wurden.

    also printf("var: %x",var); ergibt var: ff00ff00 z.B.

    ich benötige je 2 stellen der Hexwerte auf einer neuen Variablen. also

    int var0 = 0xff;
    int var1 = 0x00;
    int var2 = 0xff;
    int var3 = 0x00;

    leider habe ich kein ahnung wie ich und mit welchen operatoren ich das realisieren kann.

    ich würde mich über eine antwort freuen.

    vielen dank


  • Administrator

    Also zuerst einmal, bitte kein printf in einem C++ Forum. printf ist C, in C++ verwendet man für sowas die Streams.

    Zu deinem Problem:
    Eine Hexadezimalziffer kann man genau mit 4 Bits ausdrücken. Mit 8 Bits und somit einem Byte kann man zwei Hexadezimalziffern ausdrücken. Ich hoffe es klingelt bereits.

    Deine int Variable kannst du jetzt einfach aufteilen, mit den Bitschift-Operatoren. Vielleicht ein kurzes Beispiel, wie man zum Beispiel das 2. Byte auslesen würde, also 0xFF:

    int var = 0xFF00FF00;
    int temp = (var >> 8) & 0xFF;
    

    Wir schieben um 8 Bits, damit das erste Byte an der ersten Stelle ist. Dann stellen wir noch sicher, dass wir nur 8 Bits bekommen und der Rest auf 0 gesetzt wird.

    Grüssli



  • Danke für die Hilfe! Entschuldigt den C Code 🙂


Anmelden zum Antworten