谁能优化这个函数,奖50分(50分)

  • 主题发起人 主题发起人 modula-2
  • 开始时间 开始时间
M

modula-2

Unregistered / Unconfirmed
GUEST, unregistred user!
function HexToInt(hex: char): integer;
begin
case hex of
'0': result := 0;
'1': result := 1;
'2': result := 2;
'3': result := 3;
'4': result := 4;
'5': result := 5;
'6': result := 6;
'7': result := 7;
'8': result := 8;
'9': result := 9;
'A': result := 10;
'B': result := 11;
'C': result := 12;
'D': result := 13;
'E': result := 14;
'F': result := 15;
else
result := 0

end;
end;
 
Call HexToBin pls
 
引用別的 from;weiwei81123
bytes:array[0..3] of byte;
(bytes[0] shl 8) + bytes[1] + (bytes[2] shl 24) + (bytes[3] shl 16)
 
if function HexToInt(hex: char): integer;
begin
if Hex In ['0'..'9'] then
Result:=ord(hex)-48
else if hex in ['A'..'F'] then
Result:=ord(hex)-55
else
Result:=0;
end;
 
StrToInt('$F');
 
function HexToInt(hex: char): integer;
begin
Result := StrToIntDef('$' + hex, 0);
end;
 
to 一诺代码简单是次要的,关键要快。你的函数判断集合
不一定有我的快。
xiongw的应该可以,我试一下
 
将一诺的方法改了一下,应该比你的快。
function HexToInt(hex: char): byte;
begin
if (byte(hex) >= 48) and (byte(hex) <= 57) then
Result := byte(hex) - 48
else
Result := byte(hex) - 55;
end;
 
result := strtoint('$' + hex) mod 16
 
result := strtoint('$' + hex)
 
const
btHex:array[0..255]=(...1,2,3....10,11,12...);

function HexToInt(hex: char): byte;
begin
result:=btHex[byte(hex)];
end;
 
后退
顶部