函数一、 /// <summary>
/// IP长整型转换
/// </summary>
/// <param name="IP"></param>
/// <returns></returns>
private long IpAddress(string IP)
{
long ipcode = 0;
string[] ipn = IP.Split('.');
for (int i = 0; i < ipn.Length; i++)
{
ipcode += int.Parse(ipn[i]);
if (i < ipn.Length - 1)
{
ipcode <<= 8;
}
}
return ipcode;
}
函数二、
/***********************************************************************
* 名称:comm_IP2Num
* 功能:通用/IP地址转换成长整数
* 时间:2007年5月22日 13:08:38
* 版本:0.0.1
* 备注:返回值小于0,表示出错了
***********************************************************************/
CREATE FUNCTION comm_IP2Num(
@IP VARCHAR(15)
)
RETURNS BIGINT
AS
BEGIN
DECLARE @L INT
SET @L=LEN(@IP)
IF (@IP NOT LIKE '%.%.%.%' OR @L>15)
BEGIN
RETURN -1
END
DECLARE @IP1 VARCHAR(3)
DECLARE @IP2 VARCHAR(3)
DECLARE @IP3 VARCHAR(3)
DECLARE @IP4 VARCHAR(3)
DECLARE @NIP BIGINT
DECLARE @T INT
SET @NIP=-8
SET @T=CHARINDEX('.',@IP)
IF @T>4 OR @T<=0
BEGIN
RETURN -2
END
SET @IP1=SUBSTRING(@IP,1,@T-1)
SET @IP=SUBSTRING(@IP,@T+1,@L-@T+1)
SET @T=CHARINDEX('.',@IP)
IF @T>4 OR @T<=0
BEGIN
RETURN -3
END
SET @IP2=SUBSTRING(@IP,1,@T-1)
SET @IP=SUBSTRING(@IP,@T+1,@L-@T+1)
SET @T=CHARINDEX('.',@IP)
IF @T>4 OR @T<=0
BEGIN
RETURN -4
END
SET @IP3=SUBSTRING(@IP,1,@T-1)
SET @IP4=SUBSTRING(@IP,@T+1,@L-@T+1)
IF LEN(@IP4)<1 OR LEN(@IP4)>3
BEGIN
RETURN -5
END
IF IsNumeric(@IP1)=1 AND IsNumeric(@IP2)=1 AND IsNumeric(@IP3)=1 AND IsNumeric(@IP4)=1
BEGIN
DECLARE @NIP1 BIGINT
DECLARE @NIP2 BIGINT
DECLARE @NIP3 BIGINT
DECLARE @NIP4 BIGINT
SET @NIP1=CAST(@IP1 AS BIGINT)
SET @NIP2=CAST(@IP2 AS BIGINT)
SET @NIP3=CAST(@IP3 AS BIGINT)
SET @NIP4=CAST(@IP4 AS BIGINT)
IF @NIP1>255 OR @NIP1<0 OR @NIP2>255 OR @NIP2<0 OR @NIP3>255 OR @NIP3<0 OR @NIP4>255 OR @NIP4<0
BEGIN
RETURN -6
END
SET @NIP=0
SET @NIP=@NIP+@NIP1*256*256*256
SET @NIP=@NIP+@NIP2*256*256
SET @NIP=@NIP+@NIP3*256
SET @NIP=@NIP+@NIP4
RETURN @NIP
END
ELSE
BEGIN
RETURN -7
END
RETURN @NIP
END
/// IP长整型转换
/// </summary>
/// <param name="IP"></param>
/// <returns></returns>
private long IpAddress(string IP)
{
long ipcode = 0;
string[] ipn = IP.Split('.');
for (int i = 0; i < ipn.Length; i++)
{
ipcode += int.Parse(ipn[i]);
if (i < ipn.Length - 1)
{
ipcode <<= 8;
}
}
return ipcode;
}
函数二、
/***********************************************************************
* 名称:comm_IP2Num
* 功能:通用/IP地址转换成长整数
* 时间:2007年5月22日 13:08:38
* 版本:0.0.1
* 备注:返回值小于0,表示出错了
***********************************************************************/
CREATE FUNCTION comm_IP2Num(
@IP VARCHAR(15)
)
RETURNS BIGINT
AS
BEGIN
DECLARE @L INT
SET @L=LEN(@IP)
IF (@IP NOT LIKE '%.%.%.%' OR @L>15)
BEGIN
RETURN -1
END
DECLARE @IP1 VARCHAR(3)
DECLARE @IP2 VARCHAR(3)
DECLARE @IP3 VARCHAR(3)
DECLARE @IP4 VARCHAR(3)
DECLARE @NIP BIGINT
DECLARE @T INT
SET @NIP=-8
SET @T=CHARINDEX('.',@IP)
IF @T>4 OR @T<=0
BEGIN
RETURN -2
END
SET @IP1=SUBSTRING(@IP,1,@T-1)
SET @IP=SUBSTRING(@IP,@T+1,@L-@T+1)
SET @T=CHARINDEX('.',@IP)
IF @T>4 OR @T<=0
BEGIN
RETURN -3
END
SET @IP2=SUBSTRING(@IP,1,@T-1)
SET @IP=SUBSTRING(@IP,@T+1,@L-@T+1)
SET @T=CHARINDEX('.',@IP)
IF @T>4 OR @T<=0
BEGIN
RETURN -4
END
SET @IP3=SUBSTRING(@IP,1,@T-1)
SET @IP4=SUBSTRING(@IP,@T+1,@L-@T+1)
IF LEN(@IP4)<1 OR LEN(@IP4)>3
BEGIN
RETURN -5
END
IF IsNumeric(@IP1)=1 AND IsNumeric(@IP2)=1 AND IsNumeric(@IP3)=1 AND IsNumeric(@IP4)=1
BEGIN
DECLARE @NIP1 BIGINT
DECLARE @NIP2 BIGINT
DECLARE @NIP3 BIGINT
DECLARE @NIP4 BIGINT
SET @NIP1=CAST(@IP1 AS BIGINT)
SET @NIP2=CAST(@IP2 AS BIGINT)
SET @NIP3=CAST(@IP3 AS BIGINT)
SET @NIP4=CAST(@IP4 AS BIGINT)
IF @NIP1>255 OR @NIP1<0 OR @NIP2>255 OR @NIP2<0 OR @NIP3>255 OR @NIP3<0 OR @NIP4>255 OR @NIP4<0
BEGIN
RETURN -6
END
SET @NIP=0
SET @NIP=@NIP+@NIP1*256*256*256
SET @NIP=@NIP+@NIP2*256*256
SET @NIP=@NIP+@NIP3*256
SET @NIP=@NIP+@NIP4
RETURN @NIP
END
ELSE
BEGIN
RETURN -7
END
RETURN @NIP
END