VB中有没有什么类型可以替换VC中的unsigned long和 __int64  类型?
vb中的Long型只有4byte,有没有达到8byte的整型?
如果我想要一个4byte的无符号的整型,怎么表示?
double型是一个8byte的,但它不是整型,能不能用?

解决方案 »

  1.   

    没有直接替代的。1 可以用 Long 代替 unsigned long:dim a as longif a<0 then a = a + &Hffffffff&
    2 __int64 没有对等的 ANSI 类型。double 和 __int64  的存储格式有本质区别。
      

  2.   

    // __int64  类型?暂且想到的有三种方法,
    一个是用Currency替代。
    一个是用Decimal替代。
    不过计算的时候都要小心。
    最后是用LARGE_INTEGER,自己写进行计算的代码。
      

  3.   

    VB6中应该没有,可以把长数分割来实现
    VB.NET中有新的数据类型Decimal应该能满足
      

  4.   

    如果你是调用外部函数,最重要的是类型的大小一致
    unsigned long用Long替代
    __int64用Currency替代
    然后自己用位运算处理无符号部分
    如果你自己需要处理那么大的数字
    unsigned long用Currency替代
    __int64用Currency或Decimal替代
    注意VB的Currency是 右移4个十进制位 的__int64
      

  5.   

    本人查过vb的类型
    VB:
    类型                         位数                值范围
    Integer                    2*8=16bit        -32768到+32768
    Long                       4*8=32bit            +/-2.1E9
    Sigle                      4*8=32bit        -3.402823E38到-1.401294E-45 
                                                1.401298E-45到3.402823E38
    Double                     8*8=64bit        -1.7E308到-4.9E-324
                                                4.9E-324到1.7E308
    Currency                   8*8=64           -9223372036854775808到9223372036854775807String                     每个字符8bit     最长65000变长2百万
    Byte            1*8=8bit             0到255
    Boolean                    2*8=16bit           true或false
    Date                       8*8=64bit        100年1月1日到9999年12月31日
    Object                     4*8=32        
    Variant
    总觉的用currency来代替 __int64有些不好,因为它是用浮点运算的
    还有用long来代替unsigned long必须都加一个自己的运算
      

  6.   

    VB的Currency是 右移4个十进制位 的__int64!假设ctemp、cop是Currency变量
    左边是VB表达式,右边是C表达式
    ctemp + cop 实际上是:(*(__int64*)&ctemp) + (*(__int64*)&cop)
    ctemp - cop 实际上是:(*(__int64*)&ctemp) - (*(__int64*)&cop)
    ctemp * cop 实际上是:(*(__int64*)&ctemp) * (*(__int64*)&cop) / 10000  /*注意现在是C风格,/是整数除法*/
    ctemp \ cop 实际上是:(*(__int64*)&ctemp) 10000 / (*(__int64*)&cop)Currency类型在显示的时候故意加上小数点
      

  7.   

    问题搞定,谢谢大家帮助
    这里特谢  ///zyl910(910:分儿,我又来了!)