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