dezimal -> hexadezimal



  • Hallo, ich bin neu hier und habe ein Problem, welches ich einfach nicht lösen kann:

    Ich habe eine Dezimalzahl, und will diese in 2 Bytes hexadezimal umwandeln.
    z.B. die Zahl 4138 soll in die 2 Bytes 0x10 und 0x2A konvertiert werden.

    Ich bin eher Anfänger und zerbrech mir jetzt schon seit längerer Zeit den Kopf wie ich das anstellen soll. Wichtig is, dass ich diese 2 BYTES dann getrennt habe.
    Hat jemand irgendeine Idee, wie ich das anstellen kann?

    Danke schonmals.

    PS: google hab ich auch benützt, hat mir aber nicht viel gebracht.



  • erstmal: Die Zahl ist im Computer generell binär, da lässt sich daran auch nichts ändern.

    Wenn du die Zahl geteilt ausgeben willst musst du wohl maskieren, allerdings sind 2 Hexa-Zeichen != 2 Byte, sie stellen nur ein Byte dar.

    Ausmaskieren

    int wert = 123456;
    int ersten_2_byte = wert & 0xFFFF;
    int zweiten_2_byte = (wert & 0xFFFF0000) >> 16;
    
    std::cout << hex << ersten_2_byte << "|" << zweiten_2_byte << std::endl;
    

    Nicht getestet, müsste aber gehen 😉

    EDIT://

    Wenn du jeweils 2 Hex - Zeichen willst musst du nur die maske anpassen:

    int wert = 123456;
    int ersten_1_byte = wert & 0xFF;
    int zweiten_1_byte = (wert & 0xFF00) >> 8;
    int dritten_1_byte = (wert & 0xFF0000) >> 16;
    int vierten_1_byte = (wert & 0xFF000000) >> 24;
    
    std::cout << hex << ersten_1_byte << "|" << zweiten_1_byte << "|" << dritten_1_byte << "|" << vierten_1_byte << std::endl;
    

    EDIT://
    Die 2 byte waren ja als erstes und zweites gemeint, mein Fehler dass ich das falsch verstanden habe, nimm von der 2. Lösung die ersten 2 Zahlen, das sollte dann passen



  • Ok, danke, nur will ich diese 2 Bytes(die dezimale Zahl ist nie größer als 2 Bytes) jetzt in hexadezimaler Form in einer BYTE Variable haben, und da scheiter ich jetzt eben.
    Bei deinem Beispiel werden sie ja nur in hex-Form ausgegeben.

    €: Oder steh ich jetzt gerade auf der Leitung? Ich bekomme langsam den Verdacht, dass ich ein Dummkopf bin. Bitte bestätige meine Vermutung 😉

    €2: Ok, jetzt ist es offiziel, ich bin dämlich. Großes Danke nochmal an dich, es funktioniert perfekt!! 🙂



  • das macht das ganze eigentlich leichter, nur in C++ gibt es _keine_ BYTE - Variable.

    Kannst du allerdings mit MS(?) BYTES wohl so machen:

    int wert = 12345;
    BYTE erstes = wert & 0xFF;
    BYTE zweites = (wert & 0xFF00) >> 8;
    

    Klammer weiß ich nicht ob nötig ist, stört aber eher nicht



  • darthdespotism schrieb:

    das macht das ganze eigentlich leichter, nur in C++ gibt es _keine_ BYTE - Variable.

    Kannst du allerdings mit MS(?) BYTES wohl so machen:

    int wert = 12345;
    BYTE erstes = wert & 0xFF;
    BYTE zweites = (wert & 0xFF00) >> 8;
    

    Klammer weiß ich nicht ob nötig ist, stört aber eher nicht

    So hab ichs dann auch gemacht, danke.



  • kein Problem 😉


Anmelden zum Antworten