Die beiden folgenden Funktion wandeln einen String in Hexadezimaler Darstellung
in einen String in binärer Darstellung (und umgekehrt).
Die Funktionen sind
sehr schnell, da sie sich auf Assemblercode in der
Unit Classes stützen.
Delphi-Quellcode:
// Beispiel: StrToHexString('Daten') => '446174656E'
function StrToHexString(const s : string):string;
begin
if s = '' then
Result := ''
else
begin
SetLength(Result, Length(s)*2);
BinToHex(PChar(s), PChar(Result), Length(s));
end;
end;
// Beispiel: HexStringToStr('446174656E') => 'Daten'
function HexStringToStr(s : string):string;
begin
if s = '' then
Result := ''
else
begin
if Odd(length(s)) then
s := '0'+s;
SetLength(Result, Length(s) div 2);
HexToBin(Pchar(s), PChar(Result), Length(Result));
end;
end;
Natürlich sollte man solche Funktionen auch immer auf ihre Korrektheit testen.
Deshalb kommt hier noch eine Test-Prozedur:
Delphi-Quellcode:
procedure TestHexConversions;
var
s : string;
begin
s := #0#255'Hello Testmän';
// umwandeln nach Hexstring und zurück
Assert(s=HexStringToStr(StrToHexString(s)));
s := '0011223344AFFE';
// umwandeln Hex nach binaer und zurück
Assert(s=StrToHexString(HexStringToStr(s)));
// Testen von leeren strings
Assert(HexStringToStr('')='');
Assert(StrToHexString('')='');
end;
[edit=Matze]Code formatiert. Mfg, Matze[/edit]