遇到的问题如下:数据库中存储了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
select inttoip(BITAND(dottedQuadToNumber('58.247.221.238'),
dottedQuadToNumber('255.255.255.252'))) from dual
附: 将字符串转成数字的函数:
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地址的函数:
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;
分享到:
相关推荐
遇到的问题如下:数据库中存储了IP地址,以及IP地址掩码,需要将他们转化成CIDR格式的,并且不仅仅是将掩码转化成CIDR对应的数字的问题,需要将原有的IP地址转化成对应的网络地址,例如IP地址是58.247.221.238,掩码...
shell实现netmask掩码和cidr掩码位转换 Shell 实现 Netmask 掩码和 CIDR 掩码位转换是一种常用的网络协议 软件/插件,经常在写脚本时需要实现掩码位和掩码之间的转换。下面将详细介绍 Shell 实现 Netmask 掩码和 ...
ip地址掩码,反掩码转换。软件支持将掩码长度转换为掩码或反掩码。
1. CIDR格式:CIDR通过将IP地址和一个斜杠后面的数字(称为前缀或网络掩码位数)组合在一起,例如192.168.0.0/24。这个数字表示IP地址中的网络部分的位数,剩下的位数则用于主机。CIDR使得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/掩码位 计算IP段的起始IP;根据 ip/掩码位 计算IP段的终止IP;计算子网大小等。
在计算机网络中,IP地址和子网掩码是两个非常重要的概念,了解它们之间的关系是非常必要的。本文将从IP地址和子网掩码的学习心得开始,对IP地址和子网掩码的概念进行详细的解释。 首先,需要明确的是,IP地址是 ...
子网掩码则用于确定IP地址中的网络部分和主机部分,也是一个32位的二进制数。 计算广播地址的过程涉及到IP地址与子网掩码的逻辑或运算。广播地址是在一个子网内可以发送到所有设备的地址,它是IP地址的主机部分全部...
DNS(Domain Name System)服务器则是互联网上的名字解析服务,将人类可读的域名转换成机器可识别的IP地址。当我们输入www.example.com这样的域名时,DNS服务器会查找对应的IP地址,从而实现访问目标网站。 在...
在IT领域,网络配置是日常工作中不可或缺的一部分,而IP地址和掩码的计算与管理是网络配置的基础。本文将深入探讨“IP地址和掩码计算器”这一实用工具,以及它在子网计算中的应用。 首先,让我们理解IP地址。IP...
在IT行业中,IP地址是网络通信的基础,而IP地址掩码则是用来定义网络部分和主机部分的关键工具。本文将深入探讨IP地址掩码计算地址范围的相关知识点,包括IP地址的结构、掩码的作用、子网划分以及如何计算子网数量、...
在PLC(可编程逻辑控制器)通信中,IP地址和子网掩码是网络配置的关键要素,它们确保了设备能够正确地识别和通信。本文将深入解析这两种概念及其在PLC应用中的作用。 首先,IP地址是互联网协议(IP)的基础,它用于...
实现批量的IP地址,或地址段的排序并按照CIDR格式最小化聚合。 需要聚合的IP段放在ip.list文件中,聚合后的IP在文件new_ip.list # 按照序号循环IP列表 for i in range(len(IpIntList)): # 前一个IP prev_ip = ...
你可以使用`ifconfig`命令行工具来获取或修改网络接口的IP地址、网关和子网掩码,但在程序中实现这一功能则需要利用`sys/socket.h`、`arpa/inet.h`和`net/if.h`等头文件中的函数。例如,`inet_aton()`函数用于将IPv4...
在IT行业中,IP地址是网络通信的核心组成部分,它标识了互联网上的唯一设备。...在实际工作中,理解和熟练运用IP地址十进制转换以及子网掩码计算,不仅可以提高工作效率,也是专业技能的重要体现。
本文将详细解析如何使用C#编程语言根据给定的IP地址和子网掩码来计算出广播地址,这在实际的网络管理和开发中具有广泛的应用。 ### IP地址 IP地址(Internet Protocol Address)是分配给互联网上每一台主机或...
这两种类型的IP地址转换通常涉及到将它们从一种格式转换为另一种,或者从人类可读的形式转换为网络可以理解的二进制形式。 IP地址转换的一个常见场景是将IP地址转换为对应的域名,这称为反向DNS查询。通过DNS...