![]() |
Re: Hex to String
Hmm ich würde mal sagen garnichts.
Ich habe einen Hexwert der so aussieht: 01001770010004 Den muss ich in ein String umwandeln und zu einen Server schicken. Wenn ich jetzt die gegenprobe mache und das wieder in einen Hexwert umwandel passiert folgendes: 0117700104 Die 00 sind einfach weg. |
Re: Hex to String
Das sind eindeutig Binärdaten und hexadezimal ist nur eine Darstellungsform. Somit glaube ich hier eher, dass du gar nicht richtig weisst, was du hier machst. Du willst Binärdaten dem Server schicken und somit ist der String nicht die geeignete Ablageform. Somit bekommst du diese Probleme.
|
Re: Hex to String
ohhh ihr wisst nicht was ich meine es sind keine Binärdaten, es sind einfach nur Befehle an den Server die nicht als Text sein sollen sondern als Befehle.
Und in Binärdaten gibt es nur 1 oder 0 und keine 7. Ich kann auch nen anderen Hexwert zeigen, damit ihr überzeugt seit. 2061706F6C6F67697A6520666F7220616E7920696E636F6E76 656E69656E6365206361757365642E0D0A0D0A3C623E3 Hier könnt ihr euch übersetzen, dann seht ihr, dass es doch ein Hexwert ist. Vielleicht hilft ja noch die Funktion mir der ich die Daten die ich empfange von strings in Hex werte umwandel:
Delphi-Quellcode:
function StrToHex(const S: String): String;
const HexDigits: array[0..15] of Char = '0123456789ABCDEF'; var I: Integer; P1: PChar; P2: PChar; B: Byte; begin SetLength(Result, Length(S) * 2); P1 := @S[1]; P2 := @Result[1]; for I := 1 to Length(S) do begin B := Byte(P1^); P2^ := HexDigits[B shr 4]; Inc(P2); P2^ := HexDigits[B and $F]; Inc(P1); Inc(P2); end; end; |
Re: Hex to String
Zitat:
So, wenn wir nun von Binärdaten sprechen, dann hier mal ein Beispiel: Du nimmst einen Integer mit einem Wert von 3. Diesen kannst du nun sehr schön ausgeben: binär: 00000000 00000000 00000000 00000011 oktal: 000003 dezimal: 4 hexadezimal: 00 00 00 03 etc, etc, etc Und wenn du ihn als String darstellst bzw. als Zeichen bekommst du #0#0#0#3 und das sind Steuerzeichen. Wenn du nun das ganze nicht als Integer sondern als eine Zusammenfassung von 4 Bytes mit einer gewissen Priorisierung bzw. Anordung, dann hast du den Binärwert des Integers. Binärwerte haben einen gewissen Umfang von Bytes und geben keine Interpretation der Daten wieder sondern nur die Daten. Die Darstellungsformen wiederrum benötigen einen interpretierten Datenwert - hier interpretiert als Integer. Dieser definiert sich dadurch, dass er 4 Bytes benötigt, das oberste Byte kommt zuerst im Speicher, das unterste zuletzt. Das oberste Bit (31. Bit) gibt das Vorzeichen an. Mit diesen Informationen kann man die Binärdaten bewerten und dementsprechend verarbeiten. Deine Ketten sind definitiv Binärdaten und haben spezielle Bedeutungen. Diese Bedeutungen solltest du entsprechend nutzen und interpretieren. Wenn der Server z.B: ein Datenpacket wie dieses braucht: (hex) 00 03 00 04 22 0A, dann sieht das zwar in Hex recht schön aus, sagt aber nichts über die Bedeutung/Bewertung der einzelnen Bits und Bytes aus. Die selben Daten als Struktur: 1. Byte: Type (0 = Antwort, 1 = Anfrage, 2 = Status, etc) 2. Byte: Message Identification (01 = Server Version, 02 = Server Status, 03 = etc) ... usw. Somit kannst du diese Struktur in einem Record definieren und entsprechend interpretieren, aufbauen, auslesen. Diesen Record im Speicher wird genauso abgelegt wie die hexadezimale Darstellung es darlegt. Der Typ der Daten wird mit der Struktur definiert und somit kann man sie interpretieren. Du hingegen hast bisher nur Bytes aneinander gereiht. Auch die Strings die du nachher sendest haben eine entsprechende Bedeutung. Es kommt mir eher so vor, als wenn du diese ganzen Daten einfach mit einem Sniffer mitgelesen hast und ohne zu wissen was sie im einzelnen bedeuten kommunizierst du mit dem Server. Ob da nun kriminelle Energie zu Grunde liegt oder was auch immer, ist eine Interpretationsfrage. Grundlegend aber, fehlt hier offensichtlich Wissen deinerseits. Schon allein die Aussage XXcD ohhh ihr wisst nicht was ich meine es sind keine Binärdaten, es sind einfach nur Befehle an den Server die nicht als Text sein sollen sondern als Befehle. Zitat:
Ich kann auch meine EXE in einem String ablegen, aber es definitiv der falsche Kontainertyp dafür. Aber egal, du weisst es ja besser. Und zu deiner Funktion: es gibt vorgefertigte Funktionen für beide Richtungen. Beide wurden aber schon gepostet in diesem Thread: ![]() ![]() |
Re: Hex to String
Guten Morgen,
mach Dir doch ein Array of Char und wandel mit
Delphi-Quellcode:
die HexWerte die in Stringform vorliegen
chr(StrToInt('$00'))
wieder in den ByteCode (hier char) um. Das Array kannst Du dann zum Server übertragen. Grüße Klaus |
Re: Hex to String
Ok das funktioniert genauso wie meine alte funktion.
Ich habe jetzt folgendes gemacht:
Delphi-Quellcode:
In Basic funktioniert die Function, da habe ich mir das ein wenig abgeschaut:
function HexStringToStr(d : string):string;
var I, s: Integer; n: string; begin s:=1; for I := 1 to length(d) div 2 do begin n:= copy(d, s, 2); Form6.packetinjecttemp.Text:=Form6.packetinjecttemp.Text+chr(StrToInt('$'+d)); s:= I * 2 + 1; end; end;
Code:
Vielleicht weiß ja einer was da nicht stimmt.
Public Function HexToString(sMessage As String) As String
Dim i As Integer For i = 1 To Len(sMessage) Step 2 HexToString = HexToString & Chr(Int("&h" & Mid(sMessage, i, 2))) Next End Function |
Re: Hex to String
..aber auch in dem Basic Beispiel sind
Zeichen mit einem AsciiWert von #0 nicht darstellbar. Grüße Klaus |
Re: Hex to String
Hmmmmmm komisch da funktioniert das ganze ohne Probleme.
Was mache ich denn da falsch?? |
Re: Hex to String
Vielleicht machst Du ja nichts falsch.
Im Basic Beispiel werden die Daten auch nicht angezeigt. Du packst sie in ein Editfeld oder Memo oder sonstwas. Die Zeichen sind alle im String enthalten, sie können aber nicht angezeigt werden. Setzte Dir mal einen Haltepunkt und schau Dir mal den String mit Strg-F5 an. Grüße Klaus |
Re: Hex to String
Hat sich erledigt, funktioniert alles gut.
Vielen Dank :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz