将IP地址转成长整型函数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值