/*** * author:gaoxingliang@outlook.com* created:2015年8月20日 下午9:31:35  */
package blog;import java.math.BigInteger;/*** @author gxl**/
public class Ip2Int
{/*** @param args*/public static void main(String[] args){String ipv4 = "127.255.1.1", ipv6 = "fe80:0:0:0:d48a:e3be:7d9d:ffff";// IPV4 all 4*8 =32 bit// java int is 32 bit but cann't store this.(it's signed.)long k = ip2long(ipv4);System.out.println(k);System.out.println(Long.toBinaryString(k));System.out.println(long2ip(k));System.out.println("ipv6 start :" + ipv6);BigInteger big = ipv6toInt(ipv6);System.out.println(big.toString(16));System.out.println(int2ipv6(big));ipv6 = "fe80:0:0:0:d48a:e3be::ffff";System.out.println("ipv6 start :" + ipv6);big = ipv6toInt(ipv6);System.out.println(big.toString(16));System.out.println(int2ipv6(big));}public static long ip2long(String ipv4){String[] splits = ipv4.split("\\.");long l = 0;l = l + (Long.valueOf(splits[0], 10)) << 24;l = l + (Long.valueOf(splits[1], 10) << 16);l = l + (Long.valueOf(splits[2], 10) << 8);// yunsuanfu youxianjil = l + (Long.valueOf(splits[3], 10));System.out.println(Long.toBinaryString(l));return l;}public static String long2ip(long l){String ip = "";ip = ip + (l >>> 24);ip = ip + "." + ((0x00ffffff & l) >>> 16);ip = ip + "." + ((0x0000ffff & l) >>> 8);ip = ip + "." + (0x000000ff & l);return ip;}public static BigInteger ipv6toInt(String ipv6){int compressIndex = ipv6.indexOf("::");if (compressIndex != -1){String part1s = ipv6.substring(0, compressIndex);String part2s = ipv6.substring(compressIndex + 1);BigInteger part1 = ipv6toInt(part1s);BigInteger part2 = ipv6toInt(part2s);int part1hasDot = 0;char ch[] = part1s.toCharArray();for (char c : ch){if (c == ':'){part1hasDot++;}}// ipv6 has most 7 dotreturn part1.shiftLeft(16 * (7 - part1hasDot )).add(part2);}String[] str = ipv6.split(":");BigInteger big = BigInteger.ZERO;for (int i = 0; i < str.length; i++){//::1if (str[i].isEmpty()){str[i] = "0";}big = big.add(BigInteger.valueOf(Long.valueOf(str[i], 16)).shiftLeft(16 * (str.length - i - 1)));}return big;}public static String int2ipv6(BigInteger big){String str = "";BigInteger ff = BigInteger.valueOf(0xffff);for (int i = 0; i < 8 ; i++){str = big.and(ff).toString(16) + ":" + str;big = big.shiftRight(16);}//the last :str = str.substring(0, str.length() - 1);return str.replaceFirst("(^|:)(0+(:|$)){2,8}", "::");}}

IPV6 IPV4 java 转换为数字相关推荐

  1. IPv4如何转换为IPv6?IPv4如何转换为IPv6?

    ipv6已经逐渐在应用,现在已经有很多的运营商支持ipv6,前天我们也发布了如何让电脑使用ipv6地址?有很多朋友在问?ipv6有什么作用,它的表示方式是什么,今天我们来一起来详细了解下ipv6相关计 ...

  2. php7 ipv6,php将ipv4/ipv6的真实ip转换为数字

    php将ipv4/ipv6的真实ip转换为数字 2020-09-15 59 方法一:** * Description: 此函数用来将Ip转换为数字,便于存储 * ip:IPv6.Ipv6 * PS:需 ...

  3. java 如何将数值型字符转换为数字_Java 如何将字符串转换为数字 专家详解

    在编程中我们经常需要进行各种数据类型之间的转换操作,下面将为您介绍如何将字符串转换为数字.首先我们需要了解各种数据类型的表示,String在java中为字符串类型,int在java中为整数类型,大小在 ...

  4. java科学计数法转换为数字型字符串

    很多童鞋遇到过将科学技术发转换为数字型字符串的问题,一般通过BigDecimal来转换,但这样变量为科学计数法的可以正常转换,但变量为正常类型就会出现问题(会出现很长的数值),为保证科学计数法和普通数 ...

  5. 二进制、八进制、十六进制和十进制的相互转换,原码反码补码计算以及Java中数字的存储

    1. Java中数字默认是十进制,二进制.八进制以及十六进制的表示如下 2. 二进制.八进制.十六进制和十进制的相互转换 2.1 为了不累赘描述,本文以百度的二进制小数转换为十进制小数为例,如下图 2 ...

  6. c语言case怎么输入字母,如何使用switch case语句将字母转换为数字

    我正在制作黑色插口游戏,并且需要使用switch case语句将A转换为11,将T,Q,J和K转换为10,但是我不确定如何执行代码.有人会帮助我解决这个问题吗?如何使用switch case语句将字母 ...

  7. java字符串数字统计_对字符串进行简单的字符数字统计 探索java中的List功能

    题目: 统计一个字符串中数字和字符串的个数,并分别进行排列,要求 1.数字,字符串可以从键盘获取. 2.储存在list 3.统计数字个数,字符串个数 4.把数字和字符串按从小到大的顺序输出 5.不能使 ...

  8. java 判断数字_如何在java中判断一个字符串是否是数字

    前言 数字在某些领域经常用字符串来进行表示和传递.那么我们如何判断一个字符串是否是数字呢?今天我们来探讨一下这个话题. 空字符和null 首先我们可以很清晰的知道空字符""和nul ...

  9. Java 将数字金额转成中文大写

    一个 Java 将数字金额转成中文大写的工具类,还不是很完善. import java.util.regex.Matcher; import java.util.regex.Pattern;publi ...

最新文章

  1. 一维码EAN 8简介及其解码实现(zxing-cpp)
  2. idea 快速导入实现父类方法_教你快速吸引精准粉丝实现流量变现的方法
  3. java returnAddres_JavaClient 查询ES-(重要)
  4. 用Blazor技术封装G2Plot实现Charts组件
  5. 工厂供电MATLAB仿真,工厂供电虚拟仿真实验设计研究
  6. 在MyEclipse中如何查看Spring/Hibernate/Struts/JDK等源码的方法
  7. 有读二本国防计算机学校,好的二本计算机大学
  8. JAVA性能优化笔记(一)
  9. BLE-CC2541项目的一点经验记录
  10. mysql英雄联盟卡_MySQL学习之路:爬取英雄联盟数据后续使用
  11. STM32通过SIM800L向yeelink端上传数据
  12. win10计算器rsh_win10 自带计算器快捷键有哪些_windows10计算器快捷键汇总
  13. TextStudio,调用CJK包不产生中文,以及Cannot find font gbk49 in map file的解决方案
  14. python提取某一列数据,Python numpy 提取矩阵的某一行或某一列的实例
  15. Could not get a resource from the pool 错误解决
  16. 浮士德头像裁剪flash版2016福利版
  17. 电商平台促销方式汇总
  18. 支付宝手机网页唤醒app支付
  19. AIR - 网页系统回到桌面应用
  20. layui数据表格分页无法正常显示

热门文章

  1. 仿中华英才网城市选择
  2. 数据库读写分离的理解
  3. Latex排版 Chapter1基本使用(文档结构插入表格、图片)
  4. Mac系统环境变量配置和说明【实用版】
  5. 卡哇伊404龙猫HTML源码
  6. JAVA练习257-三维形体投影面积
  7. 传感器检测系统及实训QY-812G
  8. MATLAB 对信号进行butter带通滤波
  9. 奥比中光深度相机使用笔记一
  10. 基于android 短信评价系统设计,基于 android平台的教学评价系统的设计与实现─ !bv.pdf...