Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Integer in Hex umwandeln
juelin - Mo 30.03.09 13:10
Titel: Integer in Hex umwandeln
hi,
ich möchte den Wert einer Integervariable in einen Hexwert (Char) umwandlen.
Mit der Funktion IntToHex(variable, 4) bekomme ich für den Integerwert 1234 als Ausgabe
"31 32 33 34".
Ich möchte aber als Ausgabe "00 00 04 D2" haben. Also den Hexwert von 1234
kann mir da Jemand mit einen Beispiel helfen?
Danke und Gruss
Jürgen
Moderiert von
Kha: Topic aus Programmierwerkzeuge verschoben am Mo 30.03.2009 um 13:13
BenBE - Mo 30.03.09 13:20
Die Leerzeichen musst Du dich selber drum kümmern ;-)
Kannst Du mal deine Variante zeigen, die nicht geht ??? Hast Du wirklich als Eingabe bei Dir die Integer-Zahl 1234 genommen und nicht die einzelnen Chars des Strings '1234'???
F34r0fTh3D4rk - Mo 30.03.09 13:25
Du könntest die Zahl selbst umrechnen und danach entsprechend formatieren.
z.B. so:
| Zitat: |
1234 / 16 = 77 + 2
77 / 16 = 4 + 13 [= "D"]
4 / 16 = 0 R 4
0 / 16 = 0
=> 4D2
|
mfg
JayEff - Mo 30.03.09 16:41
BenBE hat folgendes geschrieben : |
| Hast Du wirklich als Eingabe bei Dir die Integer-Zahl 1234 genommen und nicht die einzelnen Chars des Strings '1234'??? |
i := (Ord('1') shl 24) + (Ord('2') shl 16) + (Ord('3') shl 8) + Ord('4'); ergibt recht genau seine Ausgabe, aber da er da Leerzeichen drin hat, vermute ich, dass er immer einzelne Zeichen umgerechnet hat - und da hat er dann die falsche Funktion genommen ;)
Mit Ord() bekommst du aus einem Zeichen seinen ASCII-Wert raus, A = 65 zum Beispiel.
Mit StrToInt konvertierst du einen String wie '1234' in die Zahl Eintausendzweihundertvierundreißig.
Die richtige Funktion um aus dem String '1234' die Zahl 04D2 zu machen, ist
IntToHex(StrToInt('1234'), 4); :zustimm:
Programmierfreak - Di 31.03.09 21:33
Hallo
du könntest dir ja auch das ganze selber programmieren da gibt es ein einfaches Verfahren nennt sich Horner- Schema
Gruß Programmierfreak
delfiphan - Di 31.03.09 23:03
juelin hat folgendes geschrieben : |
| Ich möchte aber als Ausgabe "00 00 04 D2" haben. |
Sieht für mich nach der Zahl 1234 Big Endian codiert und byteweise in Hex ausgegeben aus. Bei PCs eher unüblich - in einem Hexeditor würdest du eher die Folge "D2 04 00 00" antreffen.
Wenn schon lässt du die Leerzeichen weg...
IntToHex(1234, 8) sollte das gewünschte Ergebnis liefern.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!