Vb.net 在Visual Basic中添加32位二进制文件
我必须计算子网地址,这可以通过将IP地址二进制添加到子网掩码二进制来实现。我可以用这个代码把它们都转换成二进制Vb.net 在Visual Basic中添加32位二进制文件,vb.net,binary,ip,decimal,Vb.net,Binary,Ip,Decimal,我必须计算子网地址,这可以通过将IP地址二进制添加到子网掩码二进制来实现。我可以用这个代码把它们都转换成二进制 Public Function Dec2Bin(ByVal DeciValue As Long, Optional ByVal NoOfBits As Integer = 8) _ As String Dim i As Integer Do While DeciValue > (2 ^ NoOfBits) - 1 NoOfBits = N
Public Function Dec2Bin(ByVal DeciValue As Long, Optional ByVal NoOfBits As Integer = 8) _
As String
Dim i As Integer
Do While DeciValue > (2 ^ NoOfBits) - 1
NoOfBits = NoOfBits + 8
Loop
Dec2Bin = vbNullString
For i = 0 To (NoOfBits - 1)
Dec2Bin = CStr((DeciValue And 2 ^ i) / 2 ^ i) & Dec2Bin
Next i
End Function
但是现在我如何将两个32位字符串相加以获得子网地址呢?我也有dec-to-bin函数,所以我不需要任何帮助。因此,我怀疑
DeciValue
是32位数字表示的IP地址,NoOfBits
是子网掩码中的位数(如8代表255.0.0,16代表255.255.0.0,24代表255.255.255.0等)
你能做的是:
Public Function Network_Address(IP as UInteger, Optional Mask as UInteger = 0)
If Mask = 0 Then
Mask = 8 * ((IP >> 30) + 1)
End If
Network_Address = IP And (4294967295 Xor ((2 ^ (32 - Mask)) - 1))
End Function
现在,您将网络地址作为其数字表示形式。我想这就是你想要的
如果未指定IP子网掩码大小,此函数还将自动检测IP子网掩码大小。您确实不需要为此设置循环。此外,如果不想在调用者中更改原语类型,则不必将其作为
ByVal
传递。