遇到的问题如下:数据库中存储了IP地址,以及IP地址掩码,需要将他们转化成CIDR格式的,并且不仅仅是将掩码转化成CIDR对应的数字的问题,需要将原有的IP地址转化成对应的网络地址,例如IP地址是58.247.221.238,掩码是255.255.255.252,需要将其转化为58.247.221.236/30。
解决方案:我们知道,将IP地址和掩码通过位与函数就能得到对应的网络地址.Google一下,找到了将IPv4地址转成数字以及转化回来的函数。有了这两个函数,再利用Oracle 自带的bitand函数,问题就解决了。可以先将IP地址和掩码通过字符串转IP的函数转成数字,然后通过位与运算就能得到相应的网络地址对应的数字,再通过数字转字符串的功能,即得到对应的网络地址。至于/后面CIDR的数字,可以通过导入一张掩码和CIDR数字的对应表得到,不在详述.
实际例子如下: 返回58.247.221.236
Sql代码
select inttoip(BITAND(dottedQuadToNumber('58.247.221.238'),
ottedQuadToNumber('255.255.255.252'))) from dual
附: 将字符串转成数字的函数:
Sql代码
CREATE OR REPLACE function dottedQuadToNumber ( dottedQuad IN VARCHAR2) return number is
Result NUMBER;
begin
Result:= (substr(dottedQuad ,
1,
(instr(dottedQuad , '.', 1, 1 ) - 1))
* 256 * 256 * 256
) +
(substr(dottedQuad ,
instr(dottedQuad , '.', 1, 1 ) + 1,
instr(dottedQuad , '.', 1, 2 ) -
instr(dottedQuad , '.', 1, 1 ) - 1) * 256 * 256
) +
(substr(dottedQuad ,
instr(dottedQuad , '.', 1, 2 ) + 1,
instr(dottedQuad , '.', 1, 3 ) -
instr(dottedQuad , '.', 1, 2 ) - 1) * 256
) +
(substr(dottedQuad ,
instr(dottedQuad , '.', 1, 3 ) + 1)
) ;
return(Result );
end dottedQuadToNumber ;
数字转成ip地址的函数:
Sql代码
CREATE OR REPLACE function inttoip(ip_address integer) return varchar2
deterministic
is
begin
return to_char(mod(trunc(ip_address /256/ 256/256 ),256))
|| '.'|| to_char(mod(trunc(ip_address/ 256/256 ),256))
|| '.'|| to_char(mod(trunc(ip_address/ 256),256 ))
|| '.'|| to_char(mod(ip_address, 256));
end;
- 大小: 31.8 KB
分享到:
相关推荐
mask2cdr 函数是将 Netmask 掩码转换为 CIDR 掩码位的函数。该函数的实现原理是将 Netmask 掩码的四个八进制数转换为二进制数,然后计算出最重要的 bits(即 leading ones)。例如,对于 Netmask 掩码 255.255.192.0...
1. CIDR格式:CIDR通过将IP地址和一个斜杠后面的数字(称为前缀或网络掩码位数)组合在一起,例如192.168.0.0/24。这个数字表示IP地址中的网络部分的位数,剩下的位数则用于主机。CIDR使得IP地址的分配更加灵活,...
ip地址掩码,反掩码转换。软件支持将掩码长度转换为掩码或反掩码。
在IT网络领域,IP地址和子网掩码是网络配置中的基本元素,它们共同决定了网络的拓扑结构和网络资源的分配。IP地址是互联网上设备的唯一标识,而子网掩码则用于划分IP地址的网络部分和主机部分,以便进行有效的路由和...
子码掩码批量转换器,网络和IP地址计算器 CIDR格式批量转换,无类别域间路由选择计算,子网计算划分 IP是由四段数字组成,在此,我们先来了解一下3类常用的IP A类IP段 0.0.0.0 到127.255.255.255 B类IP段 128.0....
在计算机网络中,IP地址和子网掩码是两个非常重要的概念,了解它们之间的关系是非常必要的。本文将从IP地址和子网掩码的学习心得开始,对IP地址和子网掩码的概念进行详细的解释。 首先,需要明确的是,IP地址是 ...
在IT领域,网络配置是日常工作中不可或缺的一部分,而IP地址和掩码的计算与管理是网络配置的基础。本文将深入探讨“IP地址和掩码计算器”这一实用工具,以及它在子网计算中的应用。 首先,让我们理解IP地址。IP...
在PLC(可编程逻辑控制器)通信中,IP地址和子网掩码是网络配置的关键要素,它们确保了设备能够正确地识别和通信。本文将深入解析这两种概念及其在PLC应用中的作用。 首先,IP地址是互联网协议(IP)的基础,它用于...
在IT行业中,IP地址是网络通信的基础,而IP地址掩码则是用来定义网络部分和主机部分的关键工具。本文将深入探讨IP地址掩码计算地址范围的相关知识点,包括IP地址的结构、掩码的作用、子网划分以及如何计算子网数量、...
1. 将IP地址和子网掩码转换为整数数组,每个八位段对应一个整数。 2. 对IP地址的每个八位段执行逻辑或运算,操作数是子网掩码相应八位段的反码(即全部为1)。在C语言中,可以使用`~`运算符实现反码。 3. 将得到的...
实现批量的IP地址,或地址段的排序并按照CIDR格式最小化聚合。 需要聚合的IP段放在ip.list文件中,聚合后的IP在文件new_ip.list # 按照序号循环IP列表 for i in range(len(IpIntList)): # 前一个IP prev_ip = ...
根据网段ip和掩码自动计算ip段,ip相关操作基础类。包括:根据 ip/掩码位 计算IP段的起始IP;根据 ip/掩码位 计算IP段的终止IP;计算子网大小等。
DNS(Domain Name System)服务器则是互联网上的名字解析服务,将人类可读的域名转换成机器可识别的IP地址。当我们输入www.example.com这样的域名时,DNS服务器会查找对应的IP地址,从而实现访问目标网站。 在...
本文将详细解析如何使用C#编程语言根据给定的IP地址和子网掩码来计算出广播地址,这在实际的网络管理和开发中具有广泛的应用。 ### IP地址 IP地址(Internet Protocol Address)是分配给互联网上每一台主机或...
在Oracle中,数字掩码通常通过`TO_CHAR`函数配合特定的格式模型来实现。数字掩码不仅可以帮助我们更好地展示数据,还可以在一定程度上提高数据的安全性和隐私性。 #### 数字掩码的基本元素 1. **9 (九)**:表示一...
总结来说,"CIDR子网掩码计算工具"是一个实用的辅助软件,它利用VC++编程语言和特定的分段掩码算法,帮助用户方便地处理CIDR格式的IP地址,进行子网掩码、IP数量和范围的计算。对于网络管理员、程序员或者学习网络...
C#作为.NET框架下的主要编程语言,提供了丰富的API和类库用于处理系统级别的任务,包括设置IP地址、子网掩码、默认网关以及DNS参数。下面我们将详细探讨这些知识点。 1. **IP地址设置**: IP地址是网络设备在网络...