C++里面有dword64 无符号数,而DELPHI里只有32位的,怎么在delphi里使用64位无符号数。
我现在用int64.可是得到的数不对。
下面是对照表,dword64值是对的。现在怎么把前面的数转换成后面的数。
int64                dword64
3232240485           7527207781
4294967040           8633827899339702016     
3232240385           31141299267048193

解决方案 »

  1.   

    var
    i:UINT64;
      

  2.   

    delphi6里没这个数据类型
      

  3.   

    delphi6没这种类型吧。
      

  4.   

    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;
      

  5.   

    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;
      

  6.   

    delphi7 中虽然有UINT64,但那只是个占位符,它定义取值范围实际是 0..-1
    只有d2005之后,UNIT64 才有真正的定义。
      

  7.   

    自己定义一个结构存储算了!
    UINT64 = record
      low32: DWORD;
      hig32: DWORD;
    end;
    然后进行转换就可以了!