Autor Beitrag
juelin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 40

Win XP, Linux
D7 K3
BeitragVerfasst: Mo 30.03.09 13:10 
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 30.03.09 13:20 
ausblenden 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'???

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: 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
Hält's aus hier
Beiträge: 3



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: 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.