【问题标题】:Adding 32-bit binary in Visual Basic在 Visual Basic 中添加 32 位二进制文​​件
【发布时间】:2015-06-27 22:18:59
【问题描述】:

我必须计算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 功能,所以我不需要任何帮助。

【问题讨论】:

  • 你真的不需要循环。

标签: vb.net binary ip decimal


【解决方案1】:

所以,我怀疑DeciValue 是您的 32 位数字表示的 IP 地址,NoOfBits 是子网掩码中的位数(255.0.0.0 为 8,255.255.0.0 为 16,255.255 为 24 .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子网掩码大小,这个函数也会自动检测。

【讨论】:

  • 另外,如果您不打算在调用者中更改原始类型,则不必将原始类型作为 ByVal 传递。
猜你喜欢
  • 1970-01-01
  • 2017-02-09
  • 2010-12-15
  • 1970-01-01
  • 2017-09-24
  • 2021-02-14
  • 2011-09-08
  • 1970-01-01
  • 2012-04-12
相关资源
最近更新 更多