Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#1

HexString <-> Binärstring

  Alt 7. Feb 2005, 10:56
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]
Andreas
  Mit Zitat antworten Zitat