'
        ' IP地址点分表示法转换为十进制表示法
        '
        Public Shared Function Dot2LongIP(ByVal dotIP As StringAs Long
            
' 使用正则表达式进行IP地址检验
            Dim subIP As String() = Split(dotIP, ".")
            
'IP Address = w.x.y.z
            'IP Number = 16777216 * w + 65536 * x + 256 * y + z

            Dot2LongIP 
= 16777216 * CLng(subIP(0)) + 65536 * CLng(subIP(1)) + 256 * CLng(subIP(2)) + CLng(subIP(3))

        
End Function


        
Public Shared Function LongIP2Dot(ByVal longIP As LongAs String
            
'IP Address = w.x.y.z
            'IP Number = 16777216 * w + 65536 * x + 256 * y + z

            
'w = int ( IP Number / 16777216 ) % 256
            'x = int ( IP Number / 65536    ) % 256
            'y = int ( IP Number / 256      ) % 256
            'z = int ( IP Number            ) % 256

            
Dim dotIP As String
            
Dim subIP As Integer

            subIP 
= CInt(Fix(longIP / 16777216)Mod 256
            dotIP 
= CStr(subIP) + "."

            subIP = CInt(Fix(longIP / 65536)Mod 256
            dotIP 
+= CStr(subIP) + "."

            subIP = CInt(Fix(longIP / 256)Mod 256
            dotIP 
+= CStr(subIP) + "."

            subIP = CInt(Fix(longIP Mod 256))
            dotIP 
+= CStr(subIP)

            
Return dotIP
        
End Function

2005-05-12补充,Ninputer:的方法确实很好,效率肯定比前面的计算方式要高.
<StructLayout(LayoutKind.Explicit)> _ 
Public Structure IPConvert 
  
<FieldOffset(0)> Public LongIP As Long 
  
<FieldOffset(0)> Public DotIP0 As Byte 
  
<FieldOffset(1)> Public DotIP1 As Byte 
  
<FieldOffset(2)> Public DotIP2 As Byte 
  
<FieldOffset(3)> Public DotIP3 As Byte 
End Structure
 
注意需要引入名称空间System.Runtime.InteropServices,并且LongIP的类型确实是Long,而不是Integer.
posted on 2004-10-28 10:57  zhumk  阅读(5473)  评论(12编辑  收藏  举报