IPV6 IPV4 java 转换为数字
/*** * 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 转换为数字相关推荐
- IPv4如何转换为IPv6?IPv4如何转换为IPv6?
ipv6已经逐渐在应用,现在已经有很多的运营商支持ipv6,前天我们也发布了如何让电脑使用ipv6地址?有很多朋友在问?ipv6有什么作用,它的表示方式是什么,今天我们来一起来详细了解下ipv6相关计 ...
- php7 ipv6,php将ipv4/ipv6的真实ip转换为数字
php将ipv4/ipv6的真实ip转换为数字 2020-09-15 59 方法一:** * Description: 此函数用来将Ip转换为数字,便于存储 * ip:IPv6.Ipv6 * PS:需 ...
- java 如何将数值型字符转换为数字_Java 如何将字符串转换为数字 专家详解
在编程中我们经常需要进行各种数据类型之间的转换操作,下面将为您介绍如何将字符串转换为数字.首先我们需要了解各种数据类型的表示,String在java中为字符串类型,int在java中为整数类型,大小在 ...
- java科学计数法转换为数字型字符串
很多童鞋遇到过将科学技术发转换为数字型字符串的问题,一般通过BigDecimal来转换,但这样变量为科学计数法的可以正常转换,但变量为正常类型就会出现问题(会出现很长的数值),为保证科学计数法和普通数 ...
- 二进制、八进制、十六进制和十进制的相互转换,原码反码补码计算以及Java中数字的存储
1. Java中数字默认是十进制,二进制.八进制以及十六进制的表示如下 2. 二进制.八进制.十六进制和十进制的相互转换 2.1 为了不累赘描述,本文以百度的二进制小数转换为十进制小数为例,如下图 2 ...
- c语言case怎么输入字母,如何使用switch case语句将字母转换为数字
我正在制作黑色插口游戏,并且需要使用switch case语句将A转换为11,将T,Q,J和K转换为10,但是我不确定如何执行代码.有人会帮助我解决这个问题吗?如何使用switch case语句将字母 ...
- java字符串数字统计_对字符串进行简单的字符数字统计 探索java中的List功能
题目: 统计一个字符串中数字和字符串的个数,并分别进行排列,要求 1.数字,字符串可以从键盘获取. 2.储存在list 3.统计数字个数,字符串个数 4.把数字和字符串按从小到大的顺序输出 5.不能使 ...
- java 判断数字_如何在java中判断一个字符串是否是数字
前言 数字在某些领域经常用字符串来进行表示和传递.那么我们如何判断一个字符串是否是数字呢?今天我们来探讨一下这个话题. 空字符和null 首先我们可以很清晰的知道空字符""和nul ...
- Java 将数字金额转成中文大写
一个 Java 将数字金额转成中文大写的工具类,还不是很完善. import java.util.regex.Matcher; import java.util.regex.Pattern;publi ...
最新文章
- 一维码EAN 8简介及其解码实现(zxing-cpp)
- idea 快速导入实现父类方法_教你快速吸引精准粉丝实现流量变现的方法
- java returnAddres_JavaClient 查询ES-(重要)
- 用Blazor技术封装G2Plot实现Charts组件
- 工厂供电MATLAB仿真,工厂供电虚拟仿真实验设计研究
- 在MyEclipse中如何查看Spring/Hibernate/Struts/JDK等源码的方法
- 有读二本国防计算机学校,好的二本计算机大学
- JAVA性能优化笔记(一)
- BLE-CC2541项目的一点经验记录
- mysql英雄联盟卡_MySQL学习之路:爬取英雄联盟数据后续使用
- STM32通过SIM800L向yeelink端上传数据
- win10计算器rsh_win10 自带计算器快捷键有哪些_windows10计算器快捷键汇总
- TextStudio,调用CJK包不产生中文,以及Cannot find font gbk49 in map file的解决方案
- python提取某一列数据,Python numpy 提取矩阵的某一行或某一列的实例
- Could not get a resource from the pool 错误解决
- 浮士德头像裁剪flash版2016福利版
- 电商平台促销方式汇总
- 支付宝手机网页唤醒app支付
- AIR - 网页系统回到桌面应用
- layui数据表格分页无法正常显示