比Delphi自带的函数速度至少快1倍以上(IntToHex)

好久没写东西了,今天被群里的起哄,就写个函数吧


function _IntToHex_(const intValue:Integer;Digits:Integer):string;
const
  strHex =
    '000102030405060708090A0B0C0D0E0F' +
    '101112131415161718191A1B1C1D1E1F' +
    '202122232425262728292A2B2C2D2E2F' +
    '303132333435363738393A3B3C3D3E3F' +
    '404142434445464748494A4B4C4D4E4F' +
    '505152535455565758595A5B5C5D5E5F' +
    '606162636465666768696A6B6C6D6E6F' +
    '707172737475767778797A7B7C7D7E7F' +
    '808182838485868788898A8B8C8D8E8F' +
    '909192939495969798999A9B9C9D9E9F' +
    'A0A1A2A3A4A5A6A7A8A9AAABACADAEAF' +
    'B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF' +
    'C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF' +
    'D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF' +
    'E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF' +
    'F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF';

type
   PInt_stu=^TInt_stu;
   TInt_stu=record
    B1:Byte;
    B2:Byte;
    B3:Byte;
    B4:Byte;
   end;
var
  P:PChar;
  T:TInt_stu;
  OutSize:Integer;
  Index:Integer;
  Buff:array[1..8] of char;
begin
  if Digits > 8 then Digits := 8;
  Integer(T) := intValue;
  //\\
  P := strHex;
  Inc(P,T.B1 + T.B1);
  Buff[7] := P^; Inc(P);
  Buff[8] := P^;

  P := strHex;
  Inc(P,T.B2 + T.B2);
  Buff[5] := P^;Inc(P);
  Buff[6] := P^;

  P := strHex;
  Inc(P,T.B3 + T.B3);
  Buff[3] := P^;Inc(P);
  Buff[4] := P^;

  P := strHex;
  Inc(P,T.B4 + T.B4);
  Buff[1] := P^;Inc(P);
  Buff[2] := P^;
  //\\
  OutSize := 8;
  for Index := 1 to 8 do
  begin
    if Buff[Index] = '0' then
      Dec(OutSize)
    else
      Break;
  end;

  if OutSize < Digits then OutSize := Digits;
  SetLength(Result,OutSize);
  //\\
  P := Pointer(Result);
  for Index := OutSize downto 1 do
  begin
    P^ :=  Buff[8 - Index + 1];
    Inc(P);
  end;
end;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值