`
哇哈哈852
  • 浏览: 92136 次
文章分类
社区版块
存档分类
最新评论

Oracle中IP地址和掩码转换成CIDR格式

阅读更多
遇到的问题如下:数据库中存储了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
分享到:
评论

相关推荐

    shell实现netmask掩码和cidr掩码位转换1

    mask2cdr 函数是将 Netmask 掩码转换为 CIDR 掩码位的函数。该函数的实现原理是将 Netmask 掩码的四个八进制数转换为二进制数,然后计算出最重要的 bits(即 leading ones)。例如,对于 Netmask 掩码 255.255.192.0...

    中国各省IP地址库CIDR格式第三批

    1. CIDR格式:CIDR通过将IP地址和一个斜杠后面的数字(称为前缀或网络掩码位数)组合在一起,例如192.168.0.0/24。这个数字表示IP地址中的网络部分的位数,剩下的位数则用于主机。CIDR使得IP地址的分配更加灵活,...

    ip地址掩码反掩码转换

    ip地址掩码,反掩码转换。软件支持将掩码长度转换为掩码或反掩码。

    IP地址子网掩码计算器

    在IT网络领域,IP地址和子网掩码是网络配置中的基本元素,它们共同决定了网络的拓扑结构和网络资源的分配。IP地址是互联网上设备的唯一标识,而子网掩码则用于划分IP地址的网络部分和主机部分,以便进行有效的路由和...

    子码掩码批量转换器,网络和IP地址计算器 CIDR格式批量转换,无类别域间路由选择计算,子网计算划分计算,子网换算工具

    子码掩码批量转换器,网络和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地址和掩码计算器

    在IT领域,网络配置是日常工作中不可或缺的一部分,而IP地址和掩码的计算与管理是网络配置的基础。本文将深入探讨“IP地址和掩码计算器”这一实用工具,以及它在子网计算中的应用。 首先,让我们理解IP地址。IP...

    PLC通信中的IP地址和子网掩码详解.docx

    在PLC(可编程逻辑控制器)通信中,IP地址和子网掩码是网络配置的关键要素,它们确保了设备能够正确地识别和通信。本文将深入解析这两种概念及其在PLC应用中的作用。 首先,IP地址是互联网协议(IP)的基础,它用于...

    ip地址掩码计算地址范围

    在IT行业中,IP地址是网络通信的基础,而IP地址掩码则是用来定义网络部分和主机部分的关键工具。本文将深入探讨IP地址掩码计算地址范围的相关知识点,包括IP地址的结构、掩码的作用、子网划分以及如何计算子网数量、...

    C语言 根据IP,子网掩码计算广播地址

    1. 将IP地址和子网掩码转换为整数数组,每个八位段对应一个整数。 2. 对IP地址的每个八位段执行逻辑或运算,操作数是子网掩码相应八位段的反码(即全部为1)。在C语言中,可以使用`~`运算符实现反码。 3. 将得到的...

    python实现批量的IP地址,或地址段的排序并按照CIDR格式最小化聚合。

    实现批量的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;根据 ip/掩码位 计算IP段的终止IP;计算子网大小等。

    易语言本机IP地址、子网掩码、DNS服务器地址设置

    DNS(Domain Name System)服务器则是互联网上的名字解析服务,将人类可读的域名转换成机器可识别的IP地址。当我们输入www.example.com这样的域名时,DNS服务器会查找对应的IP地址,从而实现访问目标网站。 在...

    C#根据IP地址和子网掩码计算广播地址

    本文将详细解析如何使用C#编程语言根据给定的IP地址和子网掩码来计算出广播地址,这在实际的网络管理和开发中具有广泛的应用。 ### IP地址 IP地址(Internet Protocol Address)是分配给互联网上每一台主机或...

    oracle 开发中的数字掩码

    在Oracle中,数字掩码通常通过`TO_CHAR`函数配合特定的格式模型来实现。数字掩码不仅可以帮助我们更好地展示数据,还可以在一定程度上提高数据的安全性和隐私性。 #### 数字掩码的基本元素 1. **9 (九)**:表示一...

    CIDR子网掩码计算工具

    总结来说,"CIDR子网掩码计算工具"是一个实用的辅助软件,它利用VC++编程语言和特定的分段掩码算法,帮助用户方便地处理CIDR格式的IP地址,进行子网掩码、IP数量和范围的计算。对于网络管理员、程序员或者学习网络...

    C#设置IP地址子网掩码默认网关DNS等参数

    C#作为.NET框架下的主要编程语言,提供了丰富的API和类库用于处理系统级别的任务,包括设置IP地址、子网掩码、默认网关以及DNS参数。下面我们将详细探讨这些知识点。 1. **IP地址设置**: IP地址是网络设备在网络...

Global site tag (gtag.js) - Google Analytics