将IP地址转换为整型数字的PHP方法、Asp方法和MsSQL方法、MySQL方法

首先我们要先了解一下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的整型数值 )
可以直接调用使用~

时间: 2025-01-20 12:15:34

将IP地址转换为整型数字的PHP方法、Asp方法和MsSQL方法、MySQL方法的相关文章

PHP IP地址与整型互相转换详解

系统函数ip2long与long2ip PHP中有内置函数ip2long可以将ip地址转换整型.  代码如下 复制代码 $ip = '210.110.11.49'; echo ip2long($ip); 输出: -764540111 输出的整型有负号是因为我们得到的结果是有符号整型,有符号整型最大值2147483647,要把结果转换为无符号型可以这么写 3530427185 使用long2ip把整型转换回ip地址    代码如下 复制代码 $ip = '210.110.11.49'; $ip_i

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 ) //ip转换成整型数值string long2ip ( string $proper_address ) // 整型数值转换成ip[MySQL的互转]:相对于MsSQL来说MySQL的转换方式比较简

PHP中IP地址与整型数字互相转换详解_php技巧

IP转换成整型存储是数据库优化一大趋势,不少人目前存储IP时还在使用字符串类型存储,字符串索引比整型索引消耗资源很多,特别是表中数据量大的时候,以及求查询某一个ip段的数据,今天说的ip是指ip4,ip6不在本文范围内. 系统函数ip2long与long2ipPHP中有内置函数ip2long可以将ip地址转换整型. 复制代码 代码如下: $ip = '210.110.11.49'; echo ip2long($ip); 输出: 复制代码 代码如下: -764540111 输出的整型有负号是因为我

将IP地址转换为长整型、将长整型转换为IP地址

ip地址|转换 将IP地址转换为长整型 Converts a string ip address ("192.168.0.1") to a Long number (3232235521). One of the reasons to do this would be to store IP addresses in databases. Numbers greatly reduce the size required to store this information. Inputs

ASP转化ip地址为长整型数字

有时候我们会在页面上显示用户的所在地区,这个原理是:先得到用户的IP,然后去查询将IP转换成一个数值,最后去查这个数值所在的范围,来得到用户所在的地方. IP转换成数值的方法: 假设IP是192.168.0.1 192*255*255*255+168*255*255+0*255+1 结果就是要得到的数值. 将ip地址转换为长整型 <%  Function CLngIP(ByVal asNewIP)  Dim lnResults  Dim lnIndex  Dim lnIpAry  lnIpAry

空指针 隐式类型转换-空指针0可以被隐式类型转换为整型,会带来什么隐患?

问题描述 空指针0可以被隐式类型转换为整型,会带来什么隐患? 以前都是用0来表示空指针的,但由于0可以被隐式类型转换为整形,这就会存在一些问题. 解决方案 一个是语义上的,NULL用来表示空指针,而0是数字的概念,分别开来,从语法上好理解和区分,防止混淆 防止隐式转换,比如该是指针的地方,却用了数字,该是数字的地方却用了指针. 所以在C++11中,引入了nullptr的关键字来代替NULL,它就不是数字0了 解决方案二: 有一些细节问题,比如 if (p = 0) 由于将==写成了=,结果将p设

JAVA中如何将整数表示的ip地址转换为字符串表示

/** * 将整数表示的ip地址转换为字符串表示. * * @param ip 32位整数表示的ip地址 * @return 点分式表示的ip地址 */ public static final String long2Ip(final long ip) { final long[] mask = { 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000 }; final StringBuilder ipAddress = new StringBuilder

JAVA中如何将字符串表示的ip地址转换为long表示

01./** 02. * 将字符串表示的ip地址转换为long表示. 03. * 04. * @param ip ip地址 05. * @return 以32位整数表示的ip地址 06. */ 07.public static final long ip2Long(final String ip) { 08. if (!RegexpUtils.isExactlyMatches("(\\d{1,3}\\.){3}\\d{1,3}", ip)) { 09. throw new Illega

java中将字符串(String)转换为整型

String转换为整型 1.使用Intger.parseInt(String)方法: //using Integer.parseInt  int i = Integer.parseInt("123");  System.out.println("i: " + i);   当字符串不是正确的数值(如"a123")的时候, Integer.parseInt()方法可能会抛出NumberFormatException .其他的数据类型也有类似的方法,如