- 人气:
- 放大
- 缩小
- 二维码
- 赞赏
delphi intToHex
看了下10.3.2版intToHex等,跟之前的xe版比较,去掉了汇编,我试了下,变慢了好多,自己写些了个,纯pascal版,测了下,要比自带的函数快差不多一倍,比xe汇编版也快很多
做了点优化,大概计算时间是Delphi 10.3.2自带函数的三分之一计算时间
function intToHexA(iValue: Cardinal; Digits: Integer): string;
const
hexChar: array[0..15] of char = '0123456789ABCDEF';
var
d: Integer;
i: Integer;
hexLen: Integer;
pc: PChar;
begin
if iValue = 0 then
begin
Result := StringOfChar('0', Digits);
end
else
begin
hexLen := 0;
for I := 0 to 7 do
begin
if ((iValue shr (i shl 2)) and $F) <> 0 then
hexLen := i + 1;
end;
if hexLen > Digits then
Digits := hexLen;
SetLength(Result, Digits);
pc := pchar(Result) + Digits - 1;
//
for i := 0 to hexLen - 1 do
begin
d := (iValue shr (i shl 2)) and $F;
pc^ := hexChar[d];
dec(pc);
end;
for I := 0 to (Digits - hexLen) - 1 do
begin
pc^ := '0';
dec(pc);
end;
end;
end;
来源:http://bbs.2ccc.com/topic.asp?topicid=575175