delphi中有无简单的16进制转10进制?(20分)

  • 主题发起人 主题发起人 david_xl
  • 开始时间 开始时间
D

david_xl

Unregistered / Unconfirmed
GUEST, unregistred user!
由于找不到HEXTOINT 只能HEXTOSTR,然后再用IF XX=‘:’then
A:=10 else
IF XX=‘;’then
A:=11... 之类的笨办法,感觉太笨了,是否有简单办法?
 
function HexStrToInt(S: String): LongInt;
var
I: Integer;
begin
Result := 0;
for I := 1 to Length(S)do
begin
if S in ['0'..'9'] then
Result := Result * 16 + (Integer(S) - 48)
else
if S in ['A'..'F'] then
Result := Result * 16 + (Ord(S) - 55);
end;
end;

uses math
.
.
.
function Hex2Dec(Hex : string) : string;
var
i : integer;
res : real;
len : integer;
begin

len := length(Trim(Hex));

for i := 1 to lendo

begin

case Hex of
'0'..'9': res := res + strToInt(Hex) * power(16,(len-i));
'a'..'f': res := res + (ord(Hex) - ord('a') + 10) * power(16,(len-i));
'A'..'F': res := res + (ord(Hex) - ord('A') + 10) * power(16,(len-i));
end;

end;

result := FloatToStr(res);
end;
 
strtoint('$'+str16);
例如:
var
k: integer;
str16:string;
begin
...
str16:='1F';
k:=strtoint('$'+str16);
//k = 31
Label1.Caption:=inttostr(k);// '31'
...
 
接受答案了.
 
后退
顶部