第一个问题: 不用转换,十六进制和十进制只要写法不同, showmessage(inttostr($ff)); //255 showmessage(inttostr(strtoint('$ff'))); //255 这样也许你应该明白了吧!第二个问题: function Power(Base, Exponent: Extended): Extended; function IntPower(Base: Extended; Exponent: Integer): Extended register;
函数是有的。从10到16进制直接调用delphi自己的inttohex就可以了 从16进制到10进制可以使用以下函数function TMainForm.HexToInt(SourceHex: String): Integer; Var Tmp:String; i,Count,MoIn,DescIn,HexNum,N:Integer; begin Try i:=0; MoIn:=0; DescIn:=0; Count:=Length(SourceHex); For i:=Count downto 1 do begin Tmp:=Copy(SourceHex,i,1); HexNum:=HexWordToInt(Tmp); if HexNum<>0 then begin MoIn:=HexNum*Floor(IntPower(16,Count-i)); if DescIn=0 then DescIn:=MoIn else DescIn:=DescIn+MoIn; end; end; Result:=DescIn; Except Result:=0; end; end;function TMainForm.HexWordToInt(Source: String): Integer; begin Try if UpperCase(Source)='0' then Result:=0 else if UpperCase(Source)='1' then Result:=1 else if UpperCase(Source)='2' then Result:=2 else if UpperCase(Source)='3' then Result:=3 else if UpperCase(Source)='4' then Result:=4 else if UpperCase(Source)='5' then Result:=5 else if UpperCase(Source)='6' then Result:=6 else if UpperCase(Source)='7' then Result:=7 else if UpperCase(Source)='8' then Result:=8 else if UpperCase(Source)='9' then Result:=9 else if UpperCase(Source)='A' then Result:=10 else if UpperCase(Source)='B' then Result:=11 else if UpperCase(Source)='C' then Result:=12 else if UpperCase(Source)='D' then Result:=13 else if UpperCase(Source)='E' then Result:=14 else if UpperCase(Source)='F' then Result:=15 Except Result:=17; end; end;
不用转换,十六进制和十进制只要写法不同,
showmessage(inttostr($ff)); //255
showmessage(inttostr(strtoint('$ff'))); //255
这样也许你应该明白了吧!第二个问题:
function Power(Base, Exponent: Extended): Extended;
function IntPower(Base: Extended; Exponent: Integer): Extended register;
从16进制到10进制可以使用以下函数function TMainForm.HexToInt(SourceHex: String): Integer;
Var
Tmp:String;
i,Count,MoIn,DescIn,HexNum,N:Integer;
begin
Try
i:=0;
MoIn:=0;
DescIn:=0;
Count:=Length(SourceHex);
For i:=Count downto 1 do
begin
Tmp:=Copy(SourceHex,i,1);
HexNum:=HexWordToInt(Tmp);
if HexNum<>0 then
begin
MoIn:=HexNum*Floor(IntPower(16,Count-i));
if DescIn=0 then
DescIn:=MoIn
else
DescIn:=DescIn+MoIn;
end;
end;
Result:=DescIn;
Except
Result:=0;
end;
end;function TMainForm.HexWordToInt(Source: String): Integer;
begin
Try
if UpperCase(Source)='0' then
Result:=0
else if UpperCase(Source)='1' then
Result:=1
else if UpperCase(Source)='2' then
Result:=2
else if UpperCase(Source)='3' then
Result:=3
else if UpperCase(Source)='4' then
Result:=4
else if UpperCase(Source)='5' then
Result:=5
else if UpperCase(Source)='6' then
Result:=6
else if UpperCase(Source)='7' then
Result:=7
else if UpperCase(Source)='8' then
Result:=8
else if UpperCase(Source)='9' then
Result:=9
else if UpperCase(Source)='A' then
Result:=10
else if UpperCase(Source)='B' then
Result:=11
else if UpperCase(Source)='C' then
Result:=12
else if UpperCase(Source)='D' then
Result:=13
else if UpperCase(Source)='E' then
Result:=14
else if UpperCase(Source)='F' then
Result:=15
Except
Result:=17;
end;
end;
写了那么多,
StrToInt(16进制字串)不就行了吗,如:
strtoint('$ff')=255
不知道你想做什么
其实我的程序是加密程序中的一段,就贴了过来!
不好意思,有没有对字符串加密感兴趣