delphi中把字符转换成16进制数问题
FunctionStr_HexToInt(Hex:String):integer;VarHexDigital:SetOfchar;i:integer;Digital:St...
Function Str_HexToInt(Hex: String): integer;
Var
HexDigital: Set Of char;
i: integer;
Digital: String;
Begin
Result := 0;
HexDigital := ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'A', 'B',
'C','D', 'E', 'F', 'a', 'b', 'c', 'd', 'e', 'f'];
If Length(Hex) = 0 Then Exit;
For i := 1 To Length(Hex) Do
Begin
Digital := Copy(Hex, i, 1);
If (i = 1) And (digital = '$') Then Continue;
End;
Digital := Copy(Hex, 1, 1);
If Digital <> '$' Then Hex := '$' + Hex;
//Result := StrToInt(Hex);
Str_HexToInt:=StrToInt(Hex) ;
End;
为什么只能计算最大值为FFFFFFF,如果在大点就出错了,高手指点下~~
谢谢你,你能详细点吗,我刚学的,有很多不明白的! 我定义成INT64一样的也只能计算出8个F啊 展开
Var
HexDigital: Set Of char;
i: integer;
Digital: String;
Begin
Result := 0;
HexDigital := ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'A', 'B',
'C','D', 'E', 'F', 'a', 'b', 'c', 'd', 'e', 'f'];
If Length(Hex) = 0 Then Exit;
For i := 1 To Length(Hex) Do
Begin
Digital := Copy(Hex, i, 1);
If (i = 1) And (digital = '$') Then Continue;
End;
Digital := Copy(Hex, 1, 1);
If Digital <> '$' Then Hex := '$' + Hex;
//Result := StrToInt(Hex);
Str_HexToInt:=StrToInt(Hex) ;
End;
为什么只能计算最大值为FFFFFFF,如果在大点就出错了,高手指点下~~
谢谢你,你能详细点吗,我刚学的,有很多不明白的! 我定义成INT64一样的也只能计算出8个F啊 展开
展开全部
调用大数运算库,否则的话是不行的。
比如下面这个举例,AAAABBBBCCCCDDDDEEEE1111222 + DDDD7777888811122CCCAAA=13521895253536167650978500042188(10进制)
当然也能输出各种格式。如果需要我可以发给你。这个也是网上下的大数库。
var
str:string;
a,b,c:TFGInt;
begin
fgint.ConvertHexStringToBase256String('AAAABBBBCCCCDDDDEEEE1111222',str);
fgint.Base256StringToFGInt(str,a);
fgint.ConvertHexStringToBase256String('DDDD7777888811122CCCAAA',str);
fgint.Base256StringToFGInt(str,b);
fgint.FGIntAdd(a,b,c);
fgint.FGIntToBase10String(c,result);
end;
比如下面这个举例,AAAABBBBCCCCDDDDEEEE1111222 + DDDD7777888811122CCCAAA=13521895253536167650978500042188(10进制)
当然也能输出各种格式。如果需要我可以发给你。这个也是网上下的大数库。
var
str:string;
a,b,c:TFGInt;
begin
fgint.ConvertHexStringToBase256String('AAAABBBBCCCCDDDDEEEE1111222',str);
fgint.Base256StringToFGInt(str,a);
fgint.ConvertHexStringToBase256String('DDDD7777888811122CCCAAA',str);
fgint.Base256StringToFGInt(str,b);
fgint.FGIntAdd(a,b,c);
fgint.FGIntToBase10String(c,result);
end;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
integer类型是32位的,4个字节,最大表示FFFFFFFF啊,你如果觉得不够可以用INT64这种类型,但只有64位,8个字节,最大表示FFFFFFFFFFFFFFFF,再大就不能用了,但INT64这种类型在计算过程中有局限性
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Function Str_HexToInt(Hex: String): Real;// 定义成real型
。。。
。。。
Str_HexToInt:=StrToInt64(Hex) ;// strtoint64
end;
调用showmessage(floattostr(Str_HexToInt('FFFFFFFFFFFFFFF')));
。。。
。。。
Str_HexToInt:=StrToInt64(Hex) ;// strtoint64
end;
调用showmessage(floattostr(Str_HexToInt('FFFFFFFFFFFFFFF')));
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一个Integer 只有八位 只能容纳 8位的数据.
更大的数据可以自己构造一个数据结构来.
参考LongInt
更大的数据可以自己构造一个数据结构来.
参考LongInt
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询