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

相关阅读 >>

Delphi 把整个窗体保存为图片的方法

Delphi 清空目录以及子目录

Delphi百度地图经纬度与地址互转

Delphi android应用程序中的java ui线程中执行处理

Delphi多线程程序示例(最简单的多线程)

Delphi trim 删除字符串左右两边的空格

Delphi ioutils单元3查找并搜索文件夹信息

Delphi enumwindows 获取窗体句柄 进程id 窗体信息

Delphi 获取路径分隔符

Delphi 防止程序重复执行(多种方法)

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...