关于4位组成一个十六位数的方法

 procedure TForm1.Button1Click(Sender: TObject);

const
  cHexChars: array[0..15] of Char = '0123456789ABCDEF';
var
  S: string;
  I, J: Integer;
  A: array of Byte;
  P: PChar;
  vTickCount: Longword; // 计时
begin
  s := ''; //存放结果
  SetLength(A, 10240000); // 测试数据开大一些
  SetLength(S, Length(A) div 4);
  for I := Low(A) to High(A) do //生成测试数据
    A[I] := Random(2);
  P := PChar(S);
  vTickCount := GetTickCount;
  {$R-,O-}
  for I := 0 to Length(S) - 1 do //少循环N次
  begin
    J := I shl 2;
    P^ := cHexChars[
      A[J + 0] shl 3 or
      A[J + 1] shl 2 or
      A[J + 2] shl 1 or
      A[J + 3] shl 0
    ];
    Inc(P);
  end;
  {$R+,O+}

  form1.Caption := IntToStr(GetTickCount - vTickCount); // 输出处理时间

  RichEdit1.Text :=Copy(S, 1, 10240); // 输出部分结果

end;

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

24782882

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值