/*** * 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 转换为数字
热度:81 发布时间:2024-01-11 07:42:12.0
相关解决方案
- java 乱码 汉字是 ? 如何转换成汉字
- java web 登录次数限制,该如何解决
- java 工商银行网银支付 B2B的 都亟需什么,需要注意什么
- Java Applet程序从JDK6升级到7时遇到的有关问题
- java web 视频相干
- 请教一个关于链接后缀的有关问题(java web 应用)
- java 系统单点登录解决方案
- java.lang.NumberFormatException: For input string: "id"该如何处理
- java.lang.NoSuchMethodException: setId([Ljava.lang.String;)解决方法
- java 获取客户端IP解决办法
- JAVA 后台怎么获得前台页面FCKedit编辑器中的内容以及内容的样式
- java 正则化匹配有关问题
- java web 受阻
- java.lang.IllegalStateException: No output folder,该怎么解决
- java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.makeAccess,该如何解决
- java 乱码有关问题 急求大神
- java EE错误如何解决阿,都是过了,没有能解决的!
- java 工程打包有关问题 多谢各位大神!多谢
- JAVA WEB导航条,该怎么处理
- java.sql.SQLException: Access denied for user 'root'@'localhost' (using password,该如何处理
- java 中Node 有关问题
- 关于 java 引述传递和值传递,你的知否
- 吐了,java Timer 终止不了。
- Java Web 学习中有关问题,请高手指教
- java web中的url地址小疑点。
- java web开发解决办法
- java.lang.NullPointerException解决方法
- 关于 java cast 有关问题,你明白不
- java ftp 下传和上载乱码有关问题
- java web项目上的一些文件