首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

怎么将IP地址转换为整数型

2012-04-20 
如何将IP地址转换为整数型获取到一个IP数据库其格式为startipendipcountrylocal016777215IANA167772163355

如何将IP地址转换为整数型
获取到一个IP数据库
其格式为
startip endip countrylocal
0 16777215IANA
1677721633554431IANA
3355443250331647IANA
5033164867108863美国新泽西通用电气公司
6710886467829759美国
6782976067895295美国夏威夷
...........

通过测试得知
0-16777215 为 0.0.0.0-0.255.255.255
16777216-33554431 为 1.0.0.0-1.255.255.255

如何能通过代码(非控件) 将某IP地址转换为该类型的数据?




[解决办法]
VB代码的简易实现

VBScript code
Private Sub Command1_Click()   MsgBox LongToIP(67108863) & " - " & IPToLong("3.255.255.255")End SubPrivate Function LongToIP(IPLong As Long) As String   Dim Str As String, IPStr As String   Str = Hex(IPLong)   Str = String(8 - Len(Str), "0") & Str   IPStr = ""   For X = 1 To 4      If X = 1 Then         IPStr = Int("&H" & Mid(Str, (X - 1) * 2 + 1, 2))      Else         IPStr = IPStr & "." & Int("&H" & Mid(Str, (X - 1) * 2 + 1, 2))      End If   Next X   LongToIP = IPStrEnd FunctionPrivate Function IPToLong(IPStr As String) As Long   Dim Str() As String, HEXStr As String, TempStr As String   Str = Split(IPStr, ".")   HEXStr = ""   For X = 0 To UBound(Str)      TempStr = Hex(Str(X))      HEXStr = HEXStr & String(2 - Len(TempStr), "0") & TempStr   Next X   IPToLong = CLng("&H" & HEXStr)End Function
[解决办法]
昨天匆忙,下面补全:

VBScript code
Option ExplicitFunction IPToLong(ByVal IP As String) As Long    Dim tmp As Long    Dim i As Long    IP = Replace(IP, ".", "\")    For i = 3 To 0 Step -1        tmp = Val(IP)        IPToLong = IPToLong + tmp * 256 ^ i        IP = Replace(IP, tmp & "\", "", , 1)    NextEnd FunctionFunction LongToIP(ByVal IPLong As Long) As String    Dim a(3)    Dim i As Long, idx As Long, m As Long    For i = 3 To 0 Step -1        m = 256 ^ i        a(idx) = IPLong \ m        IPLong = IPLong Mod m        idx = idx + 1    Next    LongToIP = Join(a, ".")End FunctionPrivate Sub Form_Click()    Print IPToLong("1.255.255.255")    Print LongToIP(IPToLong("1.255.255.255"))    Print IPToLong("1.0.0.0")    Print LongToIP(IPToLong("1.0.0.0"))End Sub 

热点排行