Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Sonstiges (https://www.delphipraxis.net/45-library-sonstiges/)
-   -   Delphi HexString <-> Binärstring (https://www.delphipraxis.net/39740-hexstring-binaerstring.html)

shmia 7. Feb 2005 10:56


HexString <-> Binärstring
 
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]


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz