我用GetDiskFreeSpacesEx这个API时,遇到需要转换LARGE_INTEGER类型数值的问题,但是一直不知道该如何转换。后来在微软的知识库上看到这样的代码。请各位高手解释一下!Private Function GetSize(Lo As Long, Hi As Long) As Single
    
    Dim dblLo As Single, dblHi As Single
    
    If Lo < 0 Then
        
      dblLo = 2 ^ 32 + Lo
    
    Else
        
      dblLo = Lo
    
    End If
    
    If Hi < 0 Then
        
      dblHi = 2 ^ 32 + Hi
    
    Else
        
      dblHi = Hi
    
    End If
    
    GetSize = dblLo + dblHi * 2 ^ 32
    
End Function

解决方案 »

  1.   

    我曾经使用得到计算机运行时间函数 默认返回LONG值,但如何计算机运行足够时间长,则会出现错误,我的处理办法,设返回值为N,定义一个DOUBLE (m)  ,
    m=hex(n)这样得到的值不为负,挺好,不知对你有没有帮助。
      

  2.   

    要知道数据的存储格式。vb中的数据类型都是可以表示成+/-的,最高位就是表示这个数据是+/-的。
    GetDiskFreeSpacesEx返回的是无符号的数据,就是说最高存储的还是数据不是+/-号。
      

  3.   

    考虑2进制的11,在有符号的时候表示的是-1,无符号的话是3。那么在转换的时候就是-1+2^2。
    同理在long在win32中是32位的就是2^32。