如何使用VB.NET将十六进制转换为十进制?

use*_*349 11 .net vb.net

我需要在VB.NET中将十六进制转换为十进制.在C#中找到了几个例子,但是当我尝试转换为VB.NET时,我没有成功.我想要转换的十六进制数的示例是"A14152464C203230304232323020572F544947455234352E".

Cra*_*ney 16

对于实际上不需要使用bignum类的十六进制值,可以使用常规转换函数,但在数字前加上"&H".VB将文本中的"&H"解释为"这是一个十六进制数字",就像在代码中一样.

dim n = Cint("&H" & text)
Run Code Online (Sandbox Code Playgroud)


Mar*_*ell 6

这是一个24字节(192位)的数字; 你期待什么价值?

请注意,您可以Convert在这里使用很多蹩脚的工作 - 例如(在C#中):

    string hex = "A14152464C203230304232323020572F544947455234352E";
    byte[] raw = new byte[hex.Length / 2];
    for (int i = 0; i < raw.Length ; i++)
    {
        raw[i] = Convert.ToByte(hex.Substring(i * 2,2), 16);
    }
Run Code Online (Sandbox Code Playgroud)

你如何得到raw一个数字取决于你认为这个数字是什么...

Visual Basic翻译由.NET Reflector提供(虽然"-1"看起来很奇怪):

Dim hex As String = "A14152464C203230304232323020572F544947455234352E"
Dim raw As Byte() = New Byte((hex.Length / 2)  - 1) {}
Dim i As Integer
For i = 0 To raw.Length - 1
    raw(i) = Convert.ToByte(hex.Substring((i * 2), 2), &H10)
Next i
Run Code Online (Sandbox Code Playgroud)


Mat*_*zen 5

您可以使用ValVisual Basic 中的函数将十六进制值转换为十进制值。这是通过在字符串前加上"&H", 来告诉 Visual Basic 这是一个十六进制值,然后将其转换为数字来完成的。

Dim Value As Integer = Val("&H" & YourHexadecimalStringHere)
Run Code Online (Sandbox Code Playgroud)


VGs*_*VGs 5

尝试了其他回复,这对我有用:

    Convert.ToInt32(yourHEXString, 16)
Run Code Online (Sandbox Code Playgroud)

文档