C++里面有dword64 無符號數,而DELPHI里只有32位的,怎么在delphi里使用64位無符號數。
我現在用int64.可是得到的數不對。
下面是對照表,dword64值是對的。現在怎么把前面的數轉換成后面的數。
int64 dword64
3232240485 7527207781
4294967040 8633827899339702016
3232240385 31141299267048193
uj5u.com熱心網友回復:
vari:UINT64;
uj5u.com熱心網友回復:
delphi6里沒這個資料型別uj5u.com熱心網友回復:
delphi6沒這種型別吧。uj5u.com熱心網友回復:
沒嗎?D7有uj5u.com熱心網友回復:
function uinttostr(u:uint64):string;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;
uj5u.com熱心網友回復:
function uinttostr(u:uint64):string;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;
uj5u.com熱心網友回復:
delphi7 中雖然有UINT64,但那只是個占位符,它定義取值范圍實際是 0..-1只有d2005之后,UNIT64 才有真正的定義。
uj5u.com熱心網友回復:
自己定義一個結構存盤算了!UINT64 = record
low32: DWORD;
hig32: DWORD;
end;
然后進行轉換就可以了!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/133621.html
標籤:語言基礎/算法/系統設計
下一篇:決議XML獲取對應欄位值
