我需要在VB.NET中将十六进制转换为十进制.在C#中找到了几个例子,但是当我尝试转换为VB.NET时,我没有成功.我想要转换的十六进制数的示例是"A14152464C203230304232323020572F544947455234352E".
Cra*_*ney 16
对于实际上不需要使用bignum类的十六进制值,可以使用常规转换函数,但在数字前加上"&H".VB将文本中的"&H"解释为"这是一个十六进制数字",就像在代码中一样.
dim n = Cint("&H" & text)
Run Code Online (Sandbox Code Playgroud)
这是一个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)
您可以使用ValVisual Basic 中的函数将十六进制值转换为十进制值。这是通过在字符串前加上"&H", 来告诉 Visual Basic 这是一个十六进制值,然后将其转换为数字来完成的。
Dim Value As Integer = Val("&H" & YourHexadecimalStringHere)
Run Code Online (Sandbox Code Playgroud)