Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

Re: Widestring nach Hex konvertieren

  Alt 16. Dez 2005, 08:34
Also hexstr brauchst du nicht erst, denn in Delphi kannst du auch gleich mit Result arbeiten. ^^
Außerdem hätte der Copiler bei dir auch schon wegen dem result := ''; meckern sollen
Dann [i]IntToHex(Word(SourceStr), 2);, da sollte doch wohl 'ne 4 rein, denn ein WideChar hat 2 Bytes und demnach 4 HexChars
Delphi-Quellcode:
function WStrToHex(SourceStr: WideString): WideString;
const
  HexTable: Array of Char = '0123456789ABCDEF';
var
  hexstr: string;
  i : integer;
begin
  result := '';
  for i := 1 to Length(SourceStr) do
    Result := Result + IntToHex(Word(SourceStr[i]), 4);
end;

Und schneller geht es, wenn du den String nicht jedesmal in seiner Länge veränderst, sondern die Stringlänge am Anfang einmal festlegst und dann nur noch die einzelnen Chars veränderst.

z.B. (noch schneller geht es über 'nen PChar)
Delphi-Quellcode:
function WStrToHex(SourceStr: WideString): WideString;
const
  HexTable: Array of Char = '0123456789ABCDEF';
var
  i : integer;
begin
  SetLength(result, Length(SourceStr) * 4);
  for i := 0 to Length(SourceStr) - 1 do
  begin
    hexstr[i * 4 + 1] := HexTable[Word(SourceStr[i]) and $0F];
    hexstr[i * 4 + 2] := HexTable[(Word(SourceStr[i]) shr 8) and $0F];
    hexstr[i * 4 + 3] := HexTable[(Word(SourceStr[i]) shr 16) and $0F];
    hexstr[i * 4 + 4] := HexTable[(Word(SourceStr[i]) shr 24)];
  end;
end;
$2B or not $2B
  Mit Zitat antworten Zitat