- 人气:
- 放大
- 缩小
- 二维码
- 赞赏
delphi 以十六进制显示数据内容
下面这个函数没有进行效率优化,如果优化下会很快,会提高很多倍,不过满足一般的使用是够了。如果大家有兴趣,可以自己优化下,优化的主要方式是预先计算好需要的内存空间,然后直接填充,而不是象下面的算法一样,由于频率的拼接字符串,造成内存的不断分配释放。
function HexView(ABytes: TBytes): String;
var
C, R, L, ARows, ACols: Integer;
T: String;
B: Byte;
begin
L := Length(ABytes);
ARows := (L shr 4);
if (L and $F) <> 0 then
Inc(ARows);
Result := ' ';
for C := 0 to 15 do
Result := Result + IntToHex(C, 2) + ' ';
Result := Result + SLineBreak;
for R := 0 to ARows - 1 do
begin
Result := Result + IntToHex(R, 4) + ' ';
ACols := L - (R shl 4);
if ACols > 16 then
ACols := 16;
SetLength(T, 0);
for C := 0 to ACols - 1 do
begin
B := ABytes[R * 16 + C];
Result := Result + IntToHex(B, 2) + ' ';
if (B >= $20) and (B <= $7E) then
T := T + AnsiChar(B)
else
T := T + '.';
end;
for C := ACols to 15 do
Result := Result + ' ';
Result := Result + T + SLineBreak;
end;
end;
来源:http://blog.qdac.cc/?p=3665