我正在尝试将四位数的数字转换为IP地址。例如:
0001 ---> * .192.1.01
0011 ---> * .192.11.01
0111 ---> * .192.111.01
1111 ---> * .196.87.01
3458 ---> * .205.130.01
我相信子网掩码是255.255.192.0。
我将不胜感激在vb.net上对实现此目标的最佳方法的任何建议。
其他资讯:
这是一个简单的pinger程序,用户输入一个四位数的数字(他们希望ping的物理站点的ID。)IP地址分配方案很简单,第二个和第三个八位字节用作站点号,并且第四个八位位组用作站点上的设备。我没有设计这种方案,因此为什么我不确定如何使vb.net理解它。
我尝试过的
我考虑过要通过以下方式进行操作,这是非常粗糙的。但是,这最多只能使用* .192.255.01,因为我不知道一旦八位位组中的数字超过255,如何在两个八位位组之间分配数字。
Private Sub btnStartPing(sender As Object, e As EventArgs) Handles btnStartPing.Click
Dim Octet1 As Integer = *
Dim Octet2 As Integer = 192
Dim Octet3 As Integer = txtSiteID.text
Dim Octet4 As Integer = 01
Dim CompleteIP As String = ""
CompletIP = Octet1 & "." & Octet2 & "." & Octet3 & "." & Octet4
'PING CompleteIP
end sub
解决方案:
Dim var1 As Integer = Fix(192 + (NumericUpDown1.Value / 256))
Dim var2 As Integer = Fix((NumericUpDown1.Value Mod 256))
MsgBox("Your IP address is: " & "10." & var1 & "." & var2 & "." & "200")
End Sub
您需要将数字一分为二。获取前半部分的位并将其添加到192,然后直接使用后半部分的位。
Dim number As Integer
number = 1
Console.WriteLine("*.{0}.{1}.01", 192 + ((number And &HFF00) >> 8), number And &HFF) ' *.192.1.01
number = 11
Console.WriteLine("*.{0}.{1}.01", 192 + ((number And &HFF00) >> 8), number And &HFF) ' *.192.11.01
number = 111
Console.WriteLine("*.{0}.{1}.01", 192 + ((number And &HFF00) >> 8), number And &HFF) ' *.192.111.01
number = 1111
Console.WriteLine("*.{0}.{1}.01", 192 + ((number And &HFF00) >> 8), number And &HFF) ' *.196.87.01
number = 3458
Console.WriteLine("*.{0}.{1}.01", 192 + ((number And &HFF00) >> 8), number And &HFF) ' *.205.130.01
取数字并将其一分为二
3458 = 0x0D82
0x0D
0x82
然后将192添加到第一部分
0x0D + 192 = 205
0x82 = 130
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句