话题100522的标题是: 如何将十六进制转换成十进制? (100分)
分类:非技术问题 jun (1999-02-09 10:06:00)
如何将十六进制转换成十进制?
如 Edit1.text 内的A(十六进制)转换成 edit2.text 的10 十进制
能否直接定义 'H' 为十六进制的类。
注:D3 下运行。
delphi fan2 (1999-02-09 10:38:00)
自己写一个也不复杂!
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;
chenke (1999-02-09 13:46:00)
更简单用
Edit2.Text:=Format('%d',[StrtoInt(Edit1.Text)]);
不用StrToInt函数说不定也可以。
chenke (1999-02-09 13:47:00)
oh,sorry,
Edit2.Text:=Format('%d',[StrtoInt('$'+Edit1.Text)]);
CJ (1999-02-09 21:29:00)
to chenke:Ok but u must note if there is a 'H' and it is a valid Hex
Number
redforks (1999-02-10 21:28:00)
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;
jun (1999-02-12 10:35:00)
多人接受答案了。
liuming (1999-02-12 22:21:00)
我认为: chenke 的方法非常好并且最简单,
提问者的意思是,输入的确 HEX ,ENTER 之后,在另一框显示是 DEC
chenke-40,redforks-60,的回答最终被接受。