【发布时间】:2016-06-22 10:46:15
【问题描述】:
以下代码将hex string 转换为numeric 值,并且它适用于较小的十六进制数字,例如1f。但是,它不适用于像"000000000000000117c80378b8da0e33559b5997f2ad55e2f7d18ec1975b9717"这样的大数字,因为 int32 不能有那么大/小的数字。但是应该有另一种绕过这些限制的方法吗?有人可以在这里阐明一下吗,或者欢迎任何搜索关键字通过谷歌等搜索,因为我找不到任何转换大十六进制数字的方法。
Public Class Form1
Dim data As String = "000000000000000117c80378b8da0e33559b5997f2ad55e2f7d18ec1975b9717"
Dim result1 As String = Nothing
Public Function hexToNumeric(ByVal inputHexstring As String)
Dim val As Integer
val = Convert.ToInt32(inputHexstring, 16)
Return val
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
result1 = hexToNumeric(data)
End Sub
End Class
【问题讨论】:
-
总是会有一个限制。您可以使用
Int64,但最大值仍然是9,223,372,036,854,775,807;也就是说,十六进制0x7FFFFFFFFFFFFFFF所以它不会有什么帮助 - 如果你可以将它转换为整数,你到底打算如何处理这个巨大的数字? -
@MattWilko :我正在尝试将这个 python 代码
Result1 = data.decode('hex')[::-1]的功能模仿为 vb.net 代码。据我所知,该代码解码data变量中的hex string,然后反转bits。所以,我首先尝试在 vb.net 中编码以将hex string解码为numeric,然后我将反转bits。 -
我不明白的是
python可以解码巨大的十六进制数字而vb.net不能解码超过int64?
标签: .net vb.net hex integer-overflow