数字转IP地址函数

---------------------------------------------------------------------

-- Author : htl258(Tony)

-- Date   : 2010-06-19 10:34:31

-- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)

--          Jul  9 2008 14:43:34

--          Copyright (c) 1988-2008 Microsoft Corporation

--          Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)

-- Blog   : http://blog.csdn.NET/htl258

-- Subject: 数字转IP地址函数

---------------------------------------------------------------------

--数字转IP地址函数:

IF OBJECT_ID(‘dbo.fn_IP2Str‘)>0

DROP FUNCTION dbo.fn_IP2Str

Go

CREATE FUNCTION [dbo].[fn_IP2Str] (

@InIP BIGINT

)

RETURNS NVARCHAR(15)

AS

BEGIN

IF @InIP IS NULL

RETURN ‘0.0.0.0‘

DECLARE @ip BIGINT

SET @ip = @InIP

SET @ip = @ip + 0x100000000

RETURN

CAST(((@ip & 0xff000000) / 0x1000000) AS NVARCHAR(3)) + ‘.‘ +

CAST(((@ip & 0xff0000) / 0x10000) AS NVARCHAR(3)) + ‘.‘ +

CAST(((@ip & 0xff00) / 0x100) AS NVARCHAR(3)) + ‘.‘ +

CAST((@ip & 0xff) AS NVARCHAR(3))

END

GO

--调用示例:

SELECT dbo.fn_IP2Str(4294967295)

/*

---------------

255.255.255.255

(1 行受影响)

*/

SELECT dbo.fn_IP2Str(0)

/*

---------------

0.0.0.0

(1 行受影响)

*/

--附:以下转自邹建

--ip地址与数字相互转换的sql函数

IF EXISTS (

SELECT *

FROM dbo.sysobjects

WHERE id = OBJECT_ID(N‘[dbo].[f_IP2Int]‘)

AND xtype   IN (N‘FN‘, N‘IF‘, N‘TF‘)

)

DROP FUNCTION [dbo].[f_IP2Int]

GO

/*--字符型IP 地址转换成数字IP

--邹建 2004.08(引用请保留此信息)--*/

/*--调用示例

select dbo.f_IP2Int(‘255.255.255.255‘)

select dbo.f_IP2Int(‘12.168.0.1‘)

--*/

CREATE FUNCTION f_IP2Int

(

@ip CHAR(15)

)

RETURNS BIGINT

AS

BEGIN

DECLARE @re BIGINT

SET @re = 0

SELECT @re = @re+LEFT(@ip, CHARINDEX(‘.‘, @ip+‘.‘)-1)*ID, @ip = STUFF(@ip, 1, CHARINDEX(‘.‘, @ip+‘.‘), ‘‘)

FROM (

SELECT ID = CAST(16777216 AS BIGINT)

UNION ALL   SELECT 65536

UNION ALL   SELECT 256

UNION ALL   SELECT 1

)A

RETURN(@re)

END

GO

IF EXISTS (

SELECT *

FROM dbo.sysobjects

WHERE id = OBJECT_ID(N‘[dbo].[f_Int2IP]‘)

AND xtype   IN (N‘FN‘, N‘IF‘, N‘TF‘)

)

DROP FUNCTION [dbo].[f_Int2IP]

GO

/*--数字 IP   转换成格式化 IP   地址

--邹建 2004.08(引用请保留此信息)--

*/

/*--调用示例

select dbo.f_Int2IP(4294967295)

select dbo.f_Int2IP(212336641)

--*/

CREATE FUNCTION f_Int2IP

(

@IP BIGINT

)

RETURNS VARCHAR(15)

AS

BEGIN

DECLARE @re VARCHAR(16)

SET @re = ‘‘

SELECT @re = @re+‘.‘+CAST(@IP/ID AS VARCHAR), @IP = @IP%ID

FROM (

SELECT ID = CAST(16777216 AS BIGINT)

UNION ALL   SELECT 65536

UNION ALL   SELECT 256

UNION ALL   SELECT 1

)a

RETURN(STUFF(@re, 1, 1, ‘‘))

END

GO

select dbo.f_Int2IP(333444343)

/*

19.223.244.247

*/

时间: 2024-10-13 09:47:13

数字转IP地址函数的相关文章

php 获取 ip 地址 函数:

php 获取 ip 地址 函数:function getIP () //取IP函数 { global $_SERVER; if (getenv('HTTP_CLIENT_IP')) { $ip = getenv('HTTP_CLIENT_IP'); } else if (getenv('HTTP_X_FORWARDED_FOR')) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } else if (getenv('REMOTE_ADDR')) { $ip =

IP地址与域名的关系

1.IP地址:IP地址是用来唯一标识互联网上计算机的逻辑地址,让电脑之间可以相互通信. 每台连网计算机都依靠IP地址来互相区分.相互联系 2.域名:由于IP地址是数字标识,使用时难以记忆和书写,因此在IP地址的基础上又发展出一种符号化的地址方案,来代替数字型的IP地址.每一个符号化的地址都与特定的IP地址对应,这样网络上的资源访问起来就容易得多了.这个与网络上的数字型IP地址相对应的字符型地址,就被称为域名. 3.DNS:在Internet上域名与IP地址之间是一对一(或者多对一)的,域名虽然便

IP地址、域名、DNS、网址之间的区别

1.IP地址:IP地址是用来唯一标识互联网上计算机的逻辑地址,让电脑之间可以相互通信. 每台连网计算机都依靠IP地址来互相区分.相互联系 2.域名:由于IP地址是数字标识,使用时难以记忆和书写,因此在IP地址的基础上又发展出一种符号化的地址方案,来代替数字型的IP地址.每一个符号化的地址都与特定的IP地址对应,这样网络上的资源访问起来就容易得多了.这个与网络上的数字型IP地址相对应的字符型地址,就被称为域名. 3.DNS:在Internet上域名与IP地址之间是一对一(或者多对一)的,域名虽然便

php实现IP地址和数字相互转换

echo $a=ip2long ("202.97.224.68");//地址转换成数字 系统自带的函数 注:这里面有一个要注意的地方,大概由于PHP无法正确判断转换完的数字类型,出现负数的情况. 这时候只要把原来IP对应的字段int转换成bigint即可 echo 'trueip:'.long2ip('3793747831');//数字转换成IP地址 系统自带的函数

1.socket编程:socket编程,网络字节序,函数介绍,IP地址转换函数,sockaddr数据结构,网络套接字函数,socket相关函数,TCP server和client

 1  Socket编程 socket这个词可以表示很多概念: 在TCP/IP协议中,"IP地址+TCP或UDP端口号"唯一标识网络通讯中的一个进程,"IP 地址+端口号"就称为socket. 在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socket pair就唯一标识一个连接.socket本身有"插座"的意思,因此用来描述网络连 接的一对一关系. TCP/IP协议最早在BSD UNIX上实现,

(四十七)socket编程——socket引入、网络字节序、IP地址转换函数、sockaddr数据结构介绍

一.什么是socket socket这个词可以表示很多概念: 在TCP/IP协议中,"IP地址+TCP或UDP端口号"唯一标识网络通讯中的一个进程,"IP地址+端口号"就称为socket. 在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socket pair就唯一标识一个连接.socket本身有"插座"的意思,因此用来描述网络连接的一对一关系. TCP/IP协议最早在BSD UNIX上实现,为TCP/

C# IP地址与数字之间的互转

using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Text; namespace ip2Long { class Program { static void Main(string[] args) { //首先,输入一个标准的IP地址 例如 192.168.1.1 Console.WriteLine("请输入一个标准的IP地址 例如 192.168.1

刚写好的读取多网卡IP地址的函数

虽然现在一机多网卡已经很普遍(像Notebook带有线.无线.蓝芽等),但是找一个现成的能够一次过读出所有网卡IP地址的函数实在是难,无奈自己写了一个,好东西谁用谁知道. [c-sharp] view plain copy //uses WinSock; type PAddrInfoW = ^ADDRINFOW; ADDRINFOW = record ai_flags        : Integer;      // AI_PASSIVE, AI_CANONNAME, AI_NUMERICHO

利用mysql的inet_aton()和inet_ntoa()函数存储IP地址的方法分享

当前很多应用都适用字符串char(15)来存储IP地址(占用16个字节),利用inet_aton()和inet_ntoa()函数,来存储IP地址效率很高,适用unsigned int 就可以满足需求,不需要使用bigint,只需要4个字节,节省存储空间,同时效率也高很多 mysql> create table jackbillow (ip int unsigned, name char(1)); Query OK, 0 rows affected (0.02 sec) mysql> inser