如何将十六进制转换成十进制?(100分)

  • 主题发起人 主题发起人 jun
  • 开始时间 开始时间
J

jun

Unregistered / Unconfirmed
GUEST, unregistred user!
如何将十六进制转换成十进制?
如 Edit1.text 内的A(十六进制)转换成 edit2.text 的10 十进制
能否直接定义 'H' 为十六进制的类。
注:D3 下运行。
 
自己写一个也不复杂!
function convert(s:string):integer
begin
len:=length(s);
for i:=lendo
wnto 1do
begin
r:=power(16,len-i)*value();//value把字符作相应的变换,如:'1'-1;'a'-10
end;
end;
 
更简单用
Edit2.Text:=Format('%d',[StrtoInt(Edit1.Text)]);
不用StrToInt函数说不定也可以。
 
oh,sorry,
Edit2.Text:=Format('%d',[StrtoInt('$'+Edit1.Text)]);
 
to chenke:Ok but u must note if there is a 'H' and it is a valid Hex
Number
 
function chValue(ch: char): integer;
//ch的大小
begin
if ch in ['0'..'9'] then
result := ord(ch) - ord('0')
else
if ch in ['A'..'Z'] then
result := ord(ch) - ord('A') + 10
else
assert(false);
end;

function HexStrToInt(str: String): integer;
//转换16进制字符串
var
i: integer;
len: integer;
begin
str := upperCase(str);
len := length(str);
for i := lendo
wnto 1do
result := Trunc(power(16, len - i)) * chValue(str);
end;

function StrToInt2(str: String): integer;
//转换
begin
str := Trim(str);
if (LastDelimiter('Hh', str) <> 0) and (LastDelimiter('Hh', str) <> Length(str)) then
//非法格式
raise EConvertError.Create('格式不对')
else
if LastDelimiter('Hh', str) = Length(str) then
//Hex
result := HexStrToInt(Copy(str, 1, Length(str) -1))
else
//Dec
result := StrToInt(str);
end;
 
多人接受答案了。
 
我认为: chenke 的方法非常好并且最简单,
提问者的意思是,输入的确 HEX ,ENTER 之后,在另一框显示是 DEC
 

Similar threads

回复
0
查看
848
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
回复
0
查看
677
爱音乐的孩子是小白
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部