Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 将十六进制数转换为十六进制值_Vb.net - Fatal编程技术网

Vb.net 将十六进制数转换为十六进制值

Vb.net 将十六进制数转换为十六进制值,vb.net,Vb.net,我有以下代码 Dim sSerialNumber = "9082285F" Dim iSerial As Integer = ("&H" & sSerialNumber) Dim iSerial2 As Integer = Convert.ToInt32(sSerialNumber, 16) 但是VB.NET不喜欢这样。IDE在运行时告诉我在该行中检测到堆栈溢出 Dim iSerial As Integer = ("&H" & sSeri

我有以下代码

    Dim sSerialNumber = "9082285F"
    Dim iSerial As Integer = ("&H" & sSerialNumber)
    Dim iSerial2 As Integer = Convert.ToInt32(sSerialNumber, 16)
但是VB.NET不喜欢这样。IDE在运行时告诉我在该行中检测到堆栈溢出

Dim iSerial As Integer = ("&H" & sSerialNumber)
有人知道为什么,知道如何正确地做到这一点吗


谢谢大家!

如果您读取了错误,它表明您有System.OverflowException异常。尝试将类型更改为Long而不是Integer

小控制台程序演示

Sub Main()
    Dim sSerialNumber = "9082285F"
    Dim iSerial As Long = ("&H" & sSerialNumber)
    Dim iSerial2 As Long = Convert.ToInt64(sSerialNumber, 16)
    Console.WriteLine(sSerialNumber)
    Console.WriteLine(iSerial)
    Console.WriteLine(Hex(iSerial))
    Console.WriteLine(iSerial2)
    Console.WriteLine(Hex(iSerial2))
    Console.ReadLine()
End Sub

Hi Mark,有没有办法告诉Convert.ToInt32我的字符串是十六进制值?也许我的参数是一个未知的值,如果它是十六进制值、long值或int值。您的字符串太大,无法放入Int32尝试Int64,您到底想做什么?您的iSeries实际上是十六进制数的表示形式。我只在这个特殊情况下使用Convert.ToInt32,在这个特殊情况下,我读取了磁盘的分区序列,但我认为我可以告诉函数我的函数确实是十六进制值,而不是其他值。您的思路是正确的,你的主要问题是你的十六进制数太大了,我更新了我的例子来说明这个数是双向转换的。