以下代码会将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
答案 0 :(得分:1)
您应该查看BigInteger结构,请参阅https://msdn.microsoft.com/en-us/library/system.numerics.biginteger(v=vs.110).aspx
您可以从字节数组转换为BigInteger,但要注意以下事项:" BigInteger结构要求字节数组中的各个字节以小端顺序出现(即,较低的 - 值的字节字节在高位字节之前。)"
答案 1 :(得分:0)
您可以使用BigInteger
和Parse复制样本中的功能。
Imports System.Numerics
Public Shared Function hexToNumeric(ByVal inputHexstring As String) As BigInteger
Dim val As BigInteger
val = BigInteger.Parse(inputHexstring, Globalization.NumberStyles.AllowHexSpecifier)
Return val
End Function
Public Shared Sub Main()
Dim data As String = "000000000000000117c80378b8da0e33559b5997f2ad55e2f7d18ec1975b9717"
Console.WriteLine(hexToNumeric(data))
Console.ReadLine()
End Sub
结果是
6860217587554922525607992740653361396256930700588249487127