如题  VB中如何实现无符号INT  
是在结构中 比较麻烦..............谢谢! 

解决方案 »

  1.   

    将变量定义为 Long 进行存储,用下面的属性存取 Unsigned 值(用 Variant/Decimal 表示)Public Property Get UInt32(ByRef v As Long) As Variant
        If v >= 0 Then
            UInt32 = CDec(v)
        Else
            UInt32 = CDec(v + 4294967296#) '&H100000000
        End If
    End PropertyPublic Property Let UInt32(ByRef v As Long, ByVal RHS As Variant)
        RHS = CDec(RHS)
        
        If (RHS < 0) Or (RHS > 4294967296#) Then Err.Raise 6 'Overflow
        If RHS <= &H7FFFFFFF Then
            v = CLng(RHS)
        Else
            v = CLng(RHS - 4294967296#)
        End If
    End Property
      

  2.   

    简单点的,在结构中你可以用4个byte来存储
      

  3.   

    4个BYTE  这个方法很好
    但如何还原成无符号INT?
      

  4.   

    顺便问下 SIZE_T这个在VB中是定义成LONG型吗?
      

  5.   

    4 个 Byte 需要分别乘上权值 1、&H100、&H10000、&H1000000 后相加,不如用有符号的 Long 进行转换方便。SIZE_T 就是 unsigned integer,不过通常不会用到超过 2G 的值,所以用 VB 的 Long 是可以的。