我必须计算IPv4子网地址,这可以通过将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 = 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功能,所以我不需要任何帮助。
答案 0 :(得分:0)
所以,我怀疑DeciValue
是你的32位数字表示的IP地址,NoOfBits
是子网掩码中的位数(对于255.0.0.0为8,对于255.255.0.0为16)和255.255.255.0等24)。
你可以做的是:
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子网掩码大小。