求16进制转换有关问题

求16进制转换问题

vb中使用"&H"将16进制字符串80079C6D进行转换,得到的是一个负值。如何将80079C6D转为2147982445(计算器或EXCEL转换出来的数值),而不是负值。

------解决方案--------------------
本帖最后由 bcrun 于 2013-12-31 15:14:26 编辑
要用Double类型了
Dim s As String
s = "80079C6D"
Dim d As Double
d = Val("&H" & Left(s, 7)) * 16.0 + Val("&H" & Right(s, 1))

------解决方案--------------------
Private Function GetULONG(HexText As String) As Double
   On Error GoTo E_Handle
   Dim V As Long
   V = CLng("&H" & HexText)
E_Handle:
   If (V And &H80000000) Then
      GetULONG = 4294967296# + V
   Else
      GetULONG = V
   End If
End Function

Private Sub Command1_Click()
' 应用示例:
   MsgBox GetULONG("80079C6D")
End Sub