IPv6检验函数,查看一个TEXT添的IPv6是否正确

public class IPv6 {

  public static void main(String[] args) {
    String ipv6 = "3255:0304:0000:FE4A:174F:5577:289C:0014 ";
    short[] s = ipv6ToShort(ipv6);
    byte[] b = ipv6ToByte(ipv6);
    for (short c : s) {
      System.out.printf( "%9d ", c);
    }
    System.out.println();
    for (byte c : b) {
      System.out.printf( "%4d ", c);
    }
    System.out.println();
    System.out.println(checkIPv6(ipv6));
  }

  // 将 IPv6 转为 byte[16],大于 0x7F 的值用负数表示
  public static byte[] ipv6ToByte(String ipv6) {
    byte[] ipv6Byte = new byte[16];
    String[] ipv6s = ipv6.split( ": ");
    for (int i = 0; i < ipv6Byte.length / 2; i++) {
      int k = Integer.parseInt(ipv6s[i], 16);
      ipv6Byte[2 * i] = (byte) (k > > 8);
      ipv6Byte[2 * i + 1] = (byte) ((k | 0xff00) & 0xff);
    }
    return ipv6Byte;
  }
  
  // 将 IPv6 转为 short[8],大于 0x7FFF 的值用负数表示
  public static short[] ipv6ToShort(String ipv6) {
    short[] ipv6Short = new short[8];
    String[] ipv6s = ipv6.split( ": ");
    for (int i = 0; i < ipv6Short.length; i++) {
      ipv6Short[i] = (short)Integer.parseInt(ipv6s[i], 16);      
    }
    return ipv6Short;
  }
  
  // 检验 IPv6 的格式
  public static boolean checkIPv6(String ipv6) {
    return ipv6.matches( "(\\p{XDigit}){1,4}(:(\\p{XDigit}){1,4}){7} ");
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值