在应用程序开发中,涉及到IP地址的存储,大部分开发人员都将其存为String(或文本类型)。能否将固定格式为m.n.x.y的IP地址转换成 Long型的数字呢?答案是肯定的。在数据库层面,可以直接将结果设置成表的主键,避免IP地址的重复,因为是主键,也就是表的索引了,数据库查找时会更 快。

对于格式为m.n.x.y的IP地址,转换成Long型数字的算法如下:

  1. Long  =  * 256 * 256 * m +
  2. y

使用Java语言,则这样实现:

  1. privatestatic);
  2. *  *  * Long.parseLong(ip[]) +
  3. *  * Long.parseLong(ip[]) +
  4. * Long.parseLong(ip[]) +
  5. ]);
  6. return}

那么,对于已知的一个表示IP地址的Long型数字,又该如何将其还原成String(字符型)的IP地址呢?算法也很简单,整除和取余。使用Java语言,则这样实现:

  1. privatestaticlong;
  2. long *  * );
  3. long *  * * m - y) / ( * );
  4. long *  * * m -  *  *n - y) / ;
  5. return + n +  + x +  + y;
  6. }

算法测试:

  1. publicstaticvoid);
  2. }

结果:

183.62.169.146

IP地址转换成Long型数字的算法的更多相关文章

  1. [转]字符型IP地址转换成数字IP的SQL函数

    使用SQL函数可以实现许多的功能,下面为您介绍的是字符型IP地址转换成数字IP的SQL函数示例,供您参考,希望对您学习SQL函数能够有所帮助.      /**//*--调用示例       sele ...

  2. 将ip地址转换成C段地址的UDF

    将ip地址转换成C段地址的UDF,最重要的是判断IP地址的正则表达式. package cn.cnnic.ops.Study; import java.util.regex.Pattern; impo ...

  3. ip地址转换成16进制long

    <span style="font-size:18px;">public class IpUtil { /** * ip地址转换成16进制long * @param i ...

  4. c#中将IP地址转换成无符号整形数的方法与逆变换方法

    我们知道 IP地址就是给每个连接在Internet上的主机分配的一个32bit地址. 按照TCP/IP协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节.而c#中 ...

  5. python 将IP地址转换成打包后的32位格式

    python 2.7 #!/usr/bin/env python # Python Network Programming Cookbook -- Chapter - # This program r ...

  6. ip地址转换

    通常,我们用点分十进制字符串表示ipv4地址(192.168.1.1),用十六进制字符串表示ipv6地址(fe80::20c:29ff:fee9:4bcc). ipv4转换函数 #include &l ...

  7. python2.7_1.4_将IPV4地址转换成不同的格式

    代码如下: # -*- coding: utf-8 -*- import socket from binascii import hexlify def convert_ip4_address(): ...

  8. 套接字编程相关函数(1:套接字地址结构、字节序转换、IP地址转换)

    1. 套接字地址结构 1.1 IPv4套接字地址结构 IPv4套接字地址结构通常也称为“网际套接字地址结构”,它以sockaddr_in命名,定义在<netinet/in.h>头文件中.下 ...

  9. 华为上机:IP地址转换

    IP地址转换 描述: IP地址的长度为32,即有2^32-1个地址.IP地址一般采用点分十进制表示法,例如"192.168.1.1".IP地址也可以直接用一个32位的整数进行表示. ...

随机推荐

  1. Windows上安装Yeoman

    之前直接安装完Node.js后,运行npm install -g yo命令,结果出现什么"要安装framework2.0 sdk,vcbuild"什么的错误,怎么也弄不好,结果是各 ...

  2. org.hibernate.AnnotationException: No identifier specified for entity: cn.itcast.domain.Counter

    因为我的hibernate映射表没有主键所以报这个错. 解决方案是: 1.创建一个主键 2.hibernate处理无主键的表的映射问题,其实很简单,就是把一条记录看成一个主键,即组合主键<com ...

  3. PHP学习笔记01——基础语法

    <!DOCTYPE html> <html> <?php // 1.使用$加变量名来表示变量,php是弱类型语言,不要求在使用变量前声明,第一次赋值时变量才被创建 $a ...

  4. UVA 11419 SAM I AM(最大二分匹配&最小点覆盖:König定理)

    题意:在方格图上打小怪,每次可以清除一整行或一整列的小怪,问最少的步数是多少,又应该在哪些位置操作(对输出顺序没有要求). 分析:最小覆盖问题 这是一种在方格图上建立的模型:令S集表示“行”,T集表示 ...

  5. cocoStudio UI编辑器 学习总结

    一.控件 控件基类 UIWidget:所有UI控件的基类 addChild:添加UIWidget类型的节点 addRenderer:添加CCNode类型的节点 所有UIWidget,都可以设置成触摸s ...

  6. I.MX6 Android backlight modify by C demo

    /************************************************************************** * I.MX6 Android backligh ...

  7. USACO 2013 Nov Silver Pogo-Cow

    最近因为闲的蛋疼(停课了),所以开始做一些 USACO 的银组题.被完虐啊 TAT 貌似 Pogo-Cow 这题是 2013 Nov Silver 唯一一道可说的题目? Pogo-Cow Descri ...

  8. mysql 表日常变化前几

    mysql 表日常变化前几use performance_schema create table test.snap1 as SELECT OBJECT_SCHEMA, OBJECT_NAME, CO ...

  9. 三:分布式事务一致性协议2pc和3pc

    一:分布式一致性协议--->对于一个分布式系统进行架构设计的过程中,往往会在系统的可用性和数据一致性之间进行反复的权衡,于是就产生了一系列的一致性协议.--->长期探索涌现出一大批经典的一 ...

  10. 数组排序,字符串math,replace练习

    1. 关于数组排序     排序一直是程序设计中的热门话题.在js中,数组有个sort()方法.在不传参数默认情况下,数组的sort()方法原理是:对数每项调用toString()方法,比较字符串按升 ...