将号码转换为IP地址(v4)



我正在尝试将一个四位数的数字转换为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中做到这一点的最佳方法的建议。

其他信息:

这是针对一个简单的ping程序,其中用户输入一个四位数的数字(他们希望ping的物理站点的ID);第三个八位位组用作站点编号,而第四个八位位位组则用作站点上的设备。我没有设计这个方案,因此我不确定如何让vb.net来理解它

我尝试过的:

我想用下面的方法来做,这太粗糙了。然而,这只适用于*.192.255.01,因为我不知道一旦在八位字节3中超过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

这应该使其成为

Public Function StartPing(txtSiteId As String) As String
Dim SiteId As Integer = Integer.Parse(txtSiteId)
'backslash performs integer division (no fractionary part)
'will throw an error when SiteId results in values greater than 255
'type Byte allows only values from 0 to 255
Dim Octet2 As Byte = 192 + (SiteId  256)
'Mod gets rest of division
Dim Octet3 As Byte = SiteId Mod 256
Return String.Format("*.{0}.{1}.01", Octet2, Octet3)
End Function

最新更新