C++里面有dword64 无符号数,而DELPHI里只有32位的,怎么在delphi里使用64位无符号数。
我现在用int64.可是得到的数不对。
下面是对照表,dword64值是对的。现在怎么把前面的数转换成后面的数。
int64 dword64
3232240485 7527207781
4294967040 8633827899339702016
3232240385 31141299267048193
我现在用int64.可是得到的数不对。
下面是对照表,dword64值是对的。现在怎么把前面的数转换成后面的数。
int64 dword64
3232240485 7527207781
4294967040 8633827899339702016
3232240385 31141299267048193
i:UINT64;
var re:string;
b:byte;
u1,u2,u3,r:uint64;
begin
re:='';
r:=0;u3:=0;
if u=0 then re:='0'
else begin if u=$FFFFFFFFFFFFFFFFthen begin
u1:=$7FFFFFFFFFFFFFFF ;
u2:=$7FFFFFFFFFFFFFFF;
U3:=1; end
else if (u<= $7FFFFFFFFFFFFFFF )and (u>0) then
begin
u1:=u;u2:=0;u3:=0; end
else
begin
u1 := $7FFFFFFFFFFFFFFF;
u2 :=u-u1; u3 :=0;
end; while (u1>0 )or (u2>0) or (u3>0) do begin
r :=u1 mod 10 + u2 mod 10 +u3 mod 10;
u3:=r div 10;
r :=r mod 10;
b:= byte( r) ;
re:= chr(ord('0')+b)+re; u1 :=u1 div 10;
u2 :=u2 div 10; end;
end;
uinttostr :=re;
end;
var re:string;
b:byte;
u1,u2,u3,r:uint64;
begin
re:='';
r:=0;u3:=0;
if u=0 then re:='0'
else begin if u=$FFFFFFFFFFFFFFFFthen begin
u1:=$7FFFFFFFFFFFFFFF ;
u2:=$7FFFFFFFFFFFFFFF;
U3:=1; end
else if (u<= $7FFFFFFFFFFFFFFF )and (u>0) then
begin
u1:=u;u2:=0;u3:=0; end
else
begin
u1 := $7FFFFFFFFFFFFFFF;
u2 :=u-u1; u3 :=0;
end; while (u1>0 )or (u2>0) or (u3>0) do begin
r :=u1 mod 10 + u2 mod 10 +u3 mod 10;
u3:=r div 10;
r :=r mod 10;
b:= byte( r) ;
re:= chr(ord('0')+b)+re; u1 :=u1 div 10;
u2 :=u2 div 10; end;
end;
uinttostr :=re;
end;
只有d2005之后,UNIT64 才有真正的定义。
UINT64 = record
low32: DWORD;
hig32: DWORD;
end;
然后进行转换就可以了!