Delphi里面有16进制转10进制的函数么?请问我的这个函数效率怎么样啊,又没有高效一点的算法实现转化??
function HexToDec(Hex:string):integer;
var i,len,rs1,rs,j:integer;
begin
rs:=0;
len:=length(Hex);
for i:=1 to len do//每重循环计算一位,从高位到低位
begin
rs1:=1;
for j:=1 to len-i do
rs1:= rs1*16;//计算其次方
case Hex[i] of
'0'..'9':rs:=rs+strtoint(Hex[i])*rs1;
'a'..'f':rs:=rs+(ord(Hex[i])-ord('a')+10)*rs1;
else
result:=-1;
exit;
end;
end;
result:=rs;
end;
问题点数:20、回复次数:5Top
1 楼fenger8293(http://www.pceggs.cn/pgComDefault.aspx?ID=191016)回复于 2005-09-16 10:52:11 得分 0
有的,好象叫hex吧Top
2 楼fenger8293(http://www.pceggs.cn/pgComDefault.aspx?ID=191016)回复于 2005-09-16 10:54:47 得分 0
哦,看错了,是16转10Top
3 楼tudouone(土豆one)回复于 2005-09-16 11:06:48 得分 0
16=>10
i:integer;
i:=strtoint('$aa'); 如果原先有一个16进制,那里面可以写('$'+值),记得要字符型
或i:=$aa;
10=>16
inttohex(整型值,显示的位数)
例inttohex(100,2)Top
4 楼windy2000()回复于 2005-09-16 11:16:40 得分 20
function HexToDec(Hex:string):integer;
var i,len,rs1,rs,j:integer;
begin
rs:=0;
len:=length(Hex);
for i:=1 to len do//每重循环计算一位,从高位到低位
begin
case Hex[i] of
'0'..'9':rs:=rs*16+ord(hex[i]);
'a'..'f':rs:=rs*16+ord(hex[i])-ord('a')+10;
'A'..'F':rs:=rs*16+ord(hex[i])-ord('A')+10;
else
result:=-1;
exit;
end;
end;
result:=rs;
end;
注意INTEGER是否会溢出? 可以试试HEXTOBIN函数
Top
5 楼flyfish99(菜鱼)回复于 2005-09-16 17:13:16 得分 0
谢谢!回复人: windy2000() ( ) 信誉:100
溢出我知道注意的了~Top




