转自 http://blog.csdn.net/testcs_dn/article/details/38585719

一、将ip地址转成long数值

将IP地址转化成整数的方法如下:

1、通过String的split方法按.分隔得到4个长度的数组

2、通过左移位操作(<<)给每一段的数字加权,第一段的权为2的24次方,第二段的权为2的16次方,第三段的权为2的8次方,最后一段的权为1

二、将数值转换为ip地址

将十进制整数形式转换成127.0.0.1形式的ip地址

将整数形式的IP地址转化成字符串的方法如下:

1、将整数值进行右移位操作(>>>),右移24位,右移时高位补0,得到的数字即为第一段IP。

2、通过与操作符(&)将整数值的高8位设为0,再右移16位,得到的数字即为第二段IP。

3、通过与操作符吧整数值的高16位设为0,再右移8位,得到的数字即为第三段IP。

4、通过与操作符吧整数值的高24位设为0,得到的数字即为第四段IP

  1. package com;
  2. public class IPUtil {
  3. /**
  4. * ip地址转成long型数字
  5. * 将IP地址转化成整数的方法如下:
  6. * 1、通过String的split方法按.分隔得到4个长度的数组
  7. * 2、通过左移位操作(<<)给每一段的数字加权,第一段的权为2的24次方,第二段的权为2的16次方,第三段的权为2的8次方,最后一段的权为1
  8. * @param strIp
  9. * @return
  10. */
  11. public static long ipToLong(String strIp) {
  12. String[]ip = strIp.split("\\.");
  13. return (Long.parseLong(ip[0]) << 24) + (Long.parseLong(ip[1]) << 16) + (Long.parseLong(ip[2]) << 8) + Long.parseLong(ip[3]);
  14. }
  15. /**
  16. * 将十进制整数形式转换成127.0.0.1形式的ip地址
  17. * 将整数形式的IP地址转化成字符串的方法如下:
  18. * 1、将整数值进行右移位操作(>>>),右移24位,右移时高位补0,得到的数字即为第一段IP。
  19. * 2、通过与操作符(&)将整数值的高8位设为0,再右移16位,得到的数字即为第二段IP。
  20. * 3、通过与操作符吧整数值的高16位设为0,再右移8位,得到的数字即为第三段IP。
  21. * 4、通过与操作符吧整数值的高24位设为0,得到的数字即为第四段IP。
  22. * @param longIp
  23. * @return
  24. */
  25. public static String longToIP(long longIp) {
  26. StringBuffer sb = new StringBuffer("");
  27. // 直接右移24位
  28. sb.append(String.valueOf((longIp >>> 24)));
  29. sb.append(".");
  30. // 将高8位置0,然后右移16位
  31. sb.append(String.valueOf((longIp & 0x00FFFFFF) >>> 16));
  32. sb.append(".");
  33. // 将高16位置0,然后右移8位
  34. sb.append(String.valueOf((longIp & 0x0000FFFF) >>> 8));
  35. sb.append(".");
  36. // 将高24位置0
  37. sb.append(String.valueOf((longIp & 0x000000FF)));
  38. return sb.toString();
  39. }
  40. public static void main(String[] args) {
  41. System.out.println(ipToLong("219.239.110.138"));
  42. System.out.println(longToIP(18537472));
  43. }
  44. }

IP地址转化为32位无符号数的更多相关文章

  1. 将IP地址字符串转为32位二进制

    def str2bin(s): temp = s.split('.') result = '' for i in range(len(temp)): temp[i] = str(bin(int(tem ...

  2. 中国移动DNS IP地址大全(32个省)

    中国移动DNS IP地址,包括广东移动DNS,上海移动DNS,北京移动DNS,陕西移动DNS,江苏移动,山东移动DNS等共全国32个移动省份的DNS IP地址. DNS 用户数 国家 省份 地区 运营 ...

  3. IP地址与子网掩码逐位相与

    逐位相与说的其实就是子网掩码与网络地址相同位置的数字相加,当和为2的时候该位置写作1,否则的话写作0

  4. 汇编刷题:在M单元和N单元分别存有一个8位无符号数36H和95H,要求比较并输出 M大于N 或者 M小于N

    DATA SEGMENT     M DB 36H     N DB 95H     RESAULT1 DB 'M>N$'     RESAULT2 DB 'M<N$' DATA ENDS ...

  5. IP地址及其子网划分

    说实话,弄到子网划分的时候还是及其头晕的,又是这又是那的,现在我们来讲解一下这些东西, 首先我们来介绍一下IP地址,要弄清子网划分,子网掩码首先还是要弄清IP地址的划分 IP地址是给Internet上 ...

  6. Trie树的应用:查询IP地址的ISP

    1. 问题描述 给定一个IP地址,如何查询其所属的ISP,如:中国移动(ChinaMobile),中国电信(ChinaTelecom),中国铁通(ChinaTietong)?现有ISP的IP地址区段可 ...

  7. 解析私有IP地址和公网IP地址

    局域网私有IP地址上外网的原理 IP地址分为两部分,网络号和主机号,这种分法应用在私有和公有IP地址上.一个局域网中,为了该局域网的安全,我们应用了私有IP地址,为了和Internet中的其他主机进行 ...

  8. javascript把IP地址转为数值几种方案,来挑战一下效率吧

    先看看什么是IP地址: IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节).IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~25 ...

  9. 如何计算IP地址及CIDR(收藏)

    如何计算IP地址及CIDR 一. IP地址概念 IP地址是一个32位的二进制数,它由网络ID和主机ID两部份组成,用来在网络中唯一的标识的一台计算机.网络ID用来标识计算机所处的网段:主 机ID用来标 ...

随机推荐

  1. c 語言 控制碼

    source code #include <stdio.h> int main() { char *test = "ABC\x41\n"; printf("s ...

  2. kernelchina.org内核研究

    kernelchina.org 内核研究 转自:http://www.kernelchina.org

  3. LINUX环境下的GUN MAKE学习笔记(二)

    第三章:makefile总述 3.1makefile的内容 在一个完整的makefile中,包含显示规则.隐含规则.变量定义.指示符和注释.下面讨论一些基本概念: 显示规则:它描述了在何种情况下如何更 ...

  4. mysql 单列索引限制

    innodb_large_prefix. 这个参数默认值是OFF.当改为ON时,允许列索引最大达到3072. >=5.7.7默认打开 <=5.7.6默认关闭 innodb_large_pr ...

  5. 《Java编程思想》笔记 第二章 一切都是对象

    1.对象存储位置 对象的引用存在栈中,对象存在堆中.new 出来的对象都在堆中存储.栈的存取速度较快. 所有局部变量都放在栈内存里,不管是基本类型变量还是引用类型变量,都存储在各自的方法栈中: 但是引 ...

  6. Selenium2+python自动化42-判断元素(expected_conditions)【转载】

    前言 经常有小伙伴问,如何判断一个元素是否存在,如何判断alert弹窗出来了,如何判断动态的元素等等一系列的判断,在selenium的expected_conditions模块收集了一系列的场景判断方 ...

  7. ORM- 图书系统查询

    图书信息系统 表结构设计 # 书 class Book(models.Model): title = models.CharField(max_length=32) publish_date = mo ...

  8. 带着问题学git

    序 作为git新手,常见的git clone,push,commit命令已经足够完成一次代码的发布,但是如果不幸碰到问题往往会束手无策,利用网络问答解决了之后也不知其所以然.所以,做一次好奇宝宝吧! ...

  9. zoj3256

    好题,由m的范围知道这肯定是矩阵乘法加速插头dp,关键是怎么写 以往插头dp常用逐格递推,而这道题要求整行逐列递推 这样我们才能构造转移矩阵. 我们可以通过假象一个第0列来将路径转化为回路问题 逐列递 ...

  10. ASP.NET MVC中DropDownList的使用

    Asp.net MVC中的DropDownLists貌似会让一开始从Asp.net Forms转过来的程序员造成不少迷惑.这篇文章讲述了为了使用DropDownLists,你需要在Asp.Net MV ...