将IP地址转成长整型函数

函数一、    /// <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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值