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

  • 主题发起人 主题发起人 天外飞鞋
  • 开始时间 开始时间

天外飞鞋

Unregistered / Unconfirmed
GUEST, unregistred user!
十六进制如何转换为十进制?
如:3F67CCE6266666B999B329D6F2FE
 
showmessage(IntToStr(StrToInt('$'+'3F67FFAA')))
 
我最多用format,这个比较好用,可以转来转去
 
function convert(s:string):integer
begin
len:=length(s);
for i:=len downto 1 do
begin
r:=power(16,len-i)*value();//value把字符作相应的变换,如:'1'-1;'a'-10
end;
end;
 
诸葛白痴,format怎么转啊
 
用IntToHex function
 
to:原野飞侠
value()怎么写呀
 
十六进制与十进制数只是表示方式不同,其实是一样的,不用转。
 
太长了,没有现成的函数。
只有硬算了,有点麻烦
用高精度除法,就是把长数字变成字符串然后运算的那个
每次用10除取模
就可以得到10进制的各位
 
同zw84611,只不过十六进制数前面加 $,
这么长的一串,是个天文数字呵。
 
人家都给你说了用IntToHex,多好的函数还在那罗嗦什么?

》》value()怎么写呀

让你自己写啊,哈哈有现成的不用!

 
看帮助,能在好多格式之间转,我是用BCB的,在D里用法差不多
 
现在的人都不仔细看题目么?!!????
 
function uhfHexCharToBin(Hex: AnsiChar): AnsiString;
begin
case Hex of
'0': Result := '0000';
'1': Result := '0001';
'2': Result := '0010';
'3': Result := '0011';
'4': Result := '0100';
'5': Result := '0101';
'6': Result := '0110';
'7': Result := '0111';
'8': Result := '1000';
'9': Result := '1001';
'A', 'a': Result := '1010';
'B', 'b': Result := '1011';
'C', 'c': Result := '1100';
'D', 'd': Result := '1101';
'E', 'e': Result := '1110';
'F', 'f': Result := '1111';
else Result := '';
end;
end;

function uhfBinToInt(const Value: AnsiString): Cardinal
//将二进制字符串转化为整数
var
i: Integer;
begin
Result := 0;
for i := 1 to Length(Value) do
begin
if (Value <> '1') and (Value <> '0') then
begin
Result := 0;
Break;
end;
if Value = '1' then
Result := Result + Round(Power(2, Length(Value) - i));
end;
end;

function uhfHexToInt(const Value: AnsiString): Cardinal
//将十六进制字符串转化为整数
var
i: Integer;
s, sTemp: AnsiString;
begin
Result := 0;
s := '';
for i := 1 to Length(Value) do
begin
sTemp := uhfHexCharToBin(Value);
if sTemp = '' then Exit;
s := s + sTemp;
end;
Result := uhfBinToInt(s);
end;
 
function HexStrToInt(str: String): integer
//转换16进制字符串
var
i: integer;
len: integer;
begin
str := upperCase(str);
len := length(str);
for i := len downto 1 do
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;
 
需要这么复杂干吗?

Str:='3F67CCE6266666B999B329D6F2FE';
GetMem(Buf,Length(Str) div 2);
try
HexToBin(Str,Buf,Length(Str) div 2);
DoSomething;
finally
FreeMem(Buf);
end;
 
答案都出来了.
但想问问:什么应用会用到这么长的数?
 
后退
顶部