转自 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. }

转载于:https://www.cnblogs.com/Elliott-Su-Faith-change-our-life/p/7395864.html

IP地址转化为32位无符号数相关推荐

  1. 编写计算表达式(X-Y+25)/Z的值得程序,要求将其商和余数分别放在A、B单元中。(设X和Y是32位无符号数,A、B和Z是16位无符号数,不考虑溢出情况。)

    编写计算表达式(X-Y+25)/Z的值得程序,要求将其商和余数分别放在A.B单元中.(设X和Y是32位无符号数,A.B和Z是16位无符号数,不考虑溢出情况.) P151 例4.8 汇编思路:首先在DA ...

  2. IP地址和子网掩码(位运算)

    (1)编写函数convert(), 将字符串表示的IP地址转为为32位无符号整数 (2)编写函数checkip(), 检查ip地址配置是否正确(当ip地址和子网相与(&)的结果,和网关和子网掩 ...

  3. 【ArcGIS风暴】ArcGIS tif转jpg:JPEG压缩仅支持8位或16位无符号数据(具有一个或三个波段,且没有色彩映射表)解决方案!

    扩展阅读:[ArcGIS风暴]ArcGIS支持的栅格数据格式大全及格式转换案例精解 文章目录 问题描述 tif格式和JPEG格式详解 ArcGIS软件tif转jpg方法总结 问题描述 如下图所示,在A ...

  4. 计算机中 8位无符号数,8位无符号数乘法运算HDL设计实例 - 全文

    加减乘除是运算的基础,也是我们在小学课堂里的重点必修课.乘除运算虽然对于我们今天来说还是小菜一碟,让计算机做起来也是九牛一毛不足挂齿,但是要真探究一下计算机是如何完乘除运算的,可还真有些学问和技巧,并 ...

  5. 【GlobalMapper精品教程】040:tif转jpg:解决ArcGIS中JPEG压缩仅支持8位或16位无符号数据的问题

    文章目录 一.问题描述 二.Globalmapper软件tif转jpg方法总结 1. 单波段导出RGB模式多个波段 2. 单波段导出单波段(灰度1个8位波段) 3. 多波段导出RGB模式多个波段 一. ...

  6. 假定主存地址位数为32位,按字节编址,主存和cache之间采用直接映射方式,主存块大小为1个字,每字32位,写操作时采用直写(Write Throght)方式,则能存放32K字数据的cache的总容量

    5单选(1分) 假定主存地址位数为32位,按字节编址,主存和cache之间采用直接映射方式,主存块大小为1个字,每字32位,写操作时采用直写(Write Throght)方式,则能存放32K字数据的c ...

  7. 80x86汇编:将AL中的8位无符号数转换为压缩型BCD数放入AX

    将AL中的8位无符号数转换为压缩型BCD数放入AX中. ;------------------------------------- 最佳答案: MOV  AH,  0         MOV  BL ...

  8. 子网掩码+ip地址_C ++程序使用位掩码查找唯一编号

    子网掩码+ip地址 Problem statement: C++ Program to find unique number in an array of n numbers in which exc ...

  9. Linux网络编程笔记 - 05 地址转换函数 32位整数,转换为点分十进制

    #include <arpa/inet.h> const char *inet_ntop(int af, const void *src,char *dst, socklen_t size ...

最新文章

  1. 分布式锁的使用与注意事项
  2. (译文)JavaScript基础——JavaScript中的深拷贝
  3. 提高你的Java代码质量吧:使用valueof前必须进行校验
  4. 学会这两招,快速突出图表重点,让老板眼前一亮
  5. 龟兔赛跑预测(蓝桥杯)
  6. python绘制国际象棋_python使用turtle绘制国际象棋棋盘
  7. port 执行命令的封装和参数详解
  8. Kubernetes 小白学习笔记(12)--搭建一个kubernetes集群-安装dashboard和heapster并验证集群安装结果
  9. P1809 过河问题_NOI导刊2011提高(01)
  10. 如何利用导数推导向心加速度公式? + 开普勒 第三定律的推导过程
  11. 微信删除和拉黑哪个更绝情?
  12. 用python画五角星、填充不了颜色_python的turtle画五角星内部不能填充的解决办法...
  13. HTML旅游网站设计与实现——东江湖旅游网站6个网页HTML+CSS+JavaScript
  14. MySQL MGR搭建过程中常遇见的问题及解决办法
  15. tensorflow安装 报错ConnectionResetError(10054, ‘远程主机强迫关闭了一个现有的连接。
  16. oracle导入报错ora01652,Oracle ORA-01652错误
  17. 微信小程序生成小程序码的方法
  18. 形式逻辑(03)联言判断 和 推理
  19. There is no getter for property named ‘xxx‘ in ‘class com.xxx‘
  20. 【try……catch】C++ try…… catch 笔记(C语言中也可以Try-Catch异常处理)

热门文章

  1. eval函数python_Python eval()函数
  2. 约瑟夫环数学公式求解
  3. Security - 轻量级Java身份认证、访问控制安全框架
  4. ssl客户端与服务端通信的demo
  5. iptables 防火墙为什么不占用端口?
  6. 挂***方法和技巧大汇总
  7. nagios监控服务短信报警开发及部署细节
  8. shell学习笔记二
  9. Resnet论文解读与TensorFlow代码分析
  10. CommonJS的值拷贝与ES6的动态映射