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 user profile iconKha: Topic aus Programmierwerkzeuge verschoben am Mo 30.03.2009 um 13:13


BenBE - Mo 30.03.09 13:20


Delphi-Quelltext
1:
IntToHex(Int, Len)                    


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

user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
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

user profile iconjuelin hat folgendes geschrieben Zum zitierten Posting springen:
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(12348) sollte das gewünschte Ergebnis liefern.