程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 將IP地址轉換為整型數字的PHP方法、Asp方法和MsSQL方法、MySQL方法

將IP地址轉換為整型數字的PHP方法、Asp方法和MsSQL方法、MySQL方法

編輯:關於PHP編程

    首先我們要先了解一下IP地址轉換為整型(嚴格來說應該說是長整型)的原理~

    【轉換原理】:假設IP為:w.x.y.z,則IP地址轉為整型數字的計算公式為:intIP = 256*256*256*w + 256*256*x + 256*y + z

    【PHP的互轉】:PHP的轉換方式比較簡單,它內置了兩個函數
    int ip2long ( string $ip_address )和 string long2ip ( string $proper_address )
    可以直接調用使用~

    【Asp的互轉】:自定義函數如下,
    '.-----------------------------------------------------------.
    '|  describtion: 將IP轉換為int型數字                           |
    '|      Authors: abandonship(http://jb51.net)            |
    '~-----------------------------------------------------------~
    Function IP2Num(ByVal strIP)
        Dim nIP
        Dim nIndex
        Dim arrIP
        arrIP = Split(strIP, ".", 4)
        For nIndex = 0 To 3
            If Not nIndex = 3 Then
                arrIP(nIndex) = arrIP(nIndex) * (256 ^ (3 - nIndex))
            End If
            nIP = nIP + arrIP(nIndex)
        Next
        IP2Num = nIP
    End Function
    '.-----------------------------------------------------------.
    '|  describtion: 將int型數字轉換為IP                           |
    '|      Authors: abandonship(http://jb51.net)            |
    '~-----------------------------------------------------------~
    Function Num2IP(ByVal nIP)
        Dim strIP
        Dim nTemp
        Dim nIndex
        For nIndex = 3 To 0 Step -1
         nTemp = Int(nIP / (256 ^ nIndex))
         strIP = strIP & nTemp & "."
         nIP = nIP - (nTemp * (256 ^ nIndex))
        Next
        strIP = Left(strIP, Len(strIP) - 1)
        Num2IP = strIP
    End Function

    【MsSQL的互轉】:自定義函數如下,
    /***************************************************************
     * 將IP轉換為int型數字                         |
     * Code CreateBy abandonship(http://jb51.net)        |
     **************************************************************/
    CREATE FUNCTION [dbo].[ipToInt](  
     @strIp varchar(15)  
    )RETURNS bigint  
    AS  
    BEGIN  
     declare @nIp bigint  
     set @nIp = 0   
     select
      @nIp = @nIp + LEFT( @strIp, charindex('.',@strIp+'.')-1)*Id 
     from(  
      select Id = cast(1*256*256*256 as bigint)  
      union all select 1*256*256  
      union all select 1*256  
      union all select 1
     ) as T
     return (@nIp)
    END 

    /***************************************************************
     * 將int型數字轉換為IP                         |
     * Code CreateBy abandonship(http://jb51.net)        |
     **************************************************************/
    CREATE FUNCTION [dbo].[intToIP](
     @nIp bigint  
    )RETURNS varchar(15)  
    As  
    BEGIN  
     declare @strIp varchar(15)  
     set @strIp = ''  
     select
      @strIp = @strIp +'.'+ cast(@nIp/ID as varchar), @nIp = @nIp%ID
     from(  
      select ID = cast(1*256*256*256 as bigint)  
      union all select 1*256*256  
      union all select 1*256  
      union all select 1
     ) as T  
     return(stuff(@strIp,1,1,''))  
    END 

    【MySQL的互轉】:相對於MsSQL來說MySQL的轉換方式比較簡單,它和PHP一樣也內置了兩個函數
    IP轉為整型: select INET_ATON (IP地址) 和 整型轉為IP: select INET_NTOA ( IP的整型數值 )
    可以直接調用使用~

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved