Registriert seit: 9. Aug 2003
389 Beiträge
Delphi 7 Professional
|
Re: Stringlänge setzen, dann füllen
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;
|
|
Zitat
|