Delphi里面有16进制转10进制的函数么?请问我的这个函数效率怎么样啊,又没有高效一点的算法实现转化??

flyfish99 2005-09-16 10:43:48
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;
...全文
138 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
windy2000 2005-09-16
  • 打赏
  • 举报
回复
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函数
tudouone 2005-09-16
  • 打赏
  • 举报
回复
16=>10
i:integer;
i:=strtoint('$aa'); 如果原先有一个16进制,那里面可以写('$'+值),记得要字符型
或i:=$aa;

10=>16
inttohex(整型值,显示的位数)
例inttohex(100,2)
手指风 2005-09-16
  • 打赏
  • 举报
回复
哦,看错了,是16转10
手指风 2005-09-16
  • 打赏
  • 举报
回复
有的,好象叫hex吧
flyfish99 2005-09-16
  • 打赏
  • 举报
回复
谢谢!回复人: windy2000() ( ) 信誉:100
溢出我知道注意的了~

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧