奇怪了。十六进制的问题。。。。。。(100分)

  • 主题发起人 主题发起人 movax
  • 开始时间 开始时间
M

movax

Unregistered / Unconfirmed
GUEST, unregistred user!
我用IntToHex(x,16)得到了HexStr: 899185DB0E6BE56C
其中x为int64,

现在 我想把来反算过来,我用StrToInt64('$'+'899185DB0E6BE56C'),但是报错了,
说$899185DB0E6BE56C is not vaild integer value? 什么原因呢?
是不是溢出了?
 
不会呀,我编译是对的

procedure TForm1.BitBtn1Click(Sender: TObject);
var
x:int64;
s:string;
begin
x:=123123;
s:=intToHex(x,16)
// s= '000000000001E0F3'
x:=strToInt64('$'+s);或x:=strToInt64('$'+'000000000001E0F3');
edit1.text:=inttostr(x);
end;
 
我的编译也没有问题呀!你用的Delphi是什么版本?
 
你的那个INT64的是负数吧!头位数过了8,的确是溢出了!
 
先用个 IF 判断是否为负;
是:取绝对值
…………
后用0减一下就行
否:就正常用就行了
 
是在kylix下的。
 
以上几位正常的,用我写的那个值试验一下?
 
在d6下是正常的,可能和操作系统有关。
 
在D6下!只要是负数也会错呀!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
回复
0
查看
700
天地弦
后退
顶部