Einzelnen Beitrag anzeigen

Basilikum

Registriert seit: 9. Aug 2003
389 Beiträge
 
Delphi 7 Professional
 
#8

Re: Stringlänge setzen, dann füllen

  Alt 10. Jun 2004, 13:14
hm... wesshalb verwendest du für 1 Byte 8 Hex-Stellen ? jede Hex-Stelle entspricht 1 Nibble = 4 Bit, sprich: für ein Byte würden 2 Stellen ausreichen... die restlichen 6 werden mit Garantie nie ungleich 0 sein.... weiter kann man sich das foo sparen, und direkt Result verwenden.... also:

Delphi-Quellcode:
function BuffToHex(ByteArray: TMyByteArray): string;
var
  i: Integer;
  s: String;
begin
  Setlength(Result, length(ByteArray) * 4);
  for i := 0 to length(ByteArray) - 1 do
  begin
    s := '$' + IntToHex(ord(ByteArray[i]), 2) + ' ';
    Move(s[1], result[i * 4 + 1], length(s));
  end;
end;
eine noch optimalere Variante wäre diese:

Delphi-Quellcode:
function BuffToHex(ByteArray: TMyByteArray): string;
const
  HexDigits : array[$0..$f] of char = ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
var
  i : integer;
begin
  Setlength(Result, length(ByteArray) * 4);
  for i := 0 to length(ByteArray) - 1 do
  begin
    result[i * 4 + 1]:='$';
    result[i * 4 + 2]:=HexDigits[ByteArray[i] shr 4];
    result[i * 4 + 3]:=HexDigits[ByteArray[i] and $f];
    result[i * 4 + 4]:=' ';
  end;
end;
  Mit Zitat antworten Zitat