2014-02-28 41 views
0

我必須計算IPv4子網地址,這可以通過將IP地址二進制文件添加到子網掩碼二進制文件中來實現。我可以將它們都轉換爲二進制代碼在Visual Basic中添加32位二進制文​​件

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

你真的不需要一個循環。 – Havenard

回答

0

所以我懷疑DeciValue在32位數字表示和NoOfBits你的IP地址是(在子網掩碼的比特數爲8爲255.0.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子網掩碼大小。

+0

另外,如果您不打算在調用者中更改它們,則不必將原始類型作爲「ByVal」傳遞。 – Havenard

相關問題