Private Function IPLong(IPStr As String) As Long
Dim i0 As Integer, i1 As Integer, b(3) As Byte, d As Double
On Error GoTo IPEmp
i0 = 1
i1 = InStr(i0, IPStr, ".")
b(0) = Mid(IPStr, i0, i1 - i0)
i0 = i1 + 1
i1 = InStr(i0, IPStr, ".")
b(1) = Mid(IPStr, i0, i1 - i0)
i0 = i1 + 1
i1 = InStr(i0, IPStr, ".")
b(2) = Mid(IPStr, i0, i1 - i0)
i0 = i1 + 1
b(3) = Mid(IPStr, i0)
d = b(3) * 16777216# + b(2) * 65536# + b(1) * 256# + b(0)
If b(3) > 127 Then
IPLong = d - 4294967296#
Else
IPLong = d
End If
Exit Function
IPEmp:
IPLong = 0
End Function应该都看得出 这段代码是把点分IP转换成long型ip的函数.问:
1. d = b(3) * 16777216# + b(2) * 65536# + b(1) * 256# + b(0)
If b(3) > 127 Then
IPLong = d - 4294967296#这个地方看不懂,为啥要这样捏.
2.问下 long型的ip是二进制形式么?
Dim i0 As Integer, i1 As Integer, b(3) As Byte, d As Double
On Error GoTo IPEmp
i0 = 1
i1 = InStr(i0, IPStr, ".")
b(0) = Mid(IPStr, i0, i1 - i0)
i0 = i1 + 1
i1 = InStr(i0, IPStr, ".")
b(1) = Mid(IPStr, i0, i1 - i0)
i0 = i1 + 1
i1 = InStr(i0, IPStr, ".")
b(2) = Mid(IPStr, i0, i1 - i0)
i0 = i1 + 1
b(3) = Mid(IPStr, i0)
d = b(3) * 16777216# + b(2) * 65536# + b(1) * 256# + b(0)
If b(3) > 127 Then
IPLong = d - 4294967296#
Else
IPLong = d
End If
Exit Function
IPEmp:
IPLong = 0
End Function应该都看得出 这段代码是把点分IP转换成long型ip的函数.问:
1. d = b(3) * 16777216# + b(2) * 65536# + b(1) * 256# + b(0)
If b(3) > 127 Then
IPLong = d - 4294967296#这个地方看不懂,为啥要这样捏.
2.问下 long型的ip是二进制形式么?
IPLong = d - 4294967296#
我觉得没必要。2、是
If b(3) > 127 Then
IPLong = d - 4294967296#
具体意思么?