IT科技类资讯

MySQL如何有效的存储IP地址?

字号+作者:益华科技来源:域名2025-11-05 04:10:19我要评论(0)

复制packagecom.java.mmzsit; /** *@author:mmzsblog *@description:Ipv4地

MySQL如何有效的存储IP地址?
复制package com.java.mmzsit;  /**   * @author :mmzsblog   * @description:Ipv4地址的有效转换   * @date :2020/5/27 22:43   */  public class Ipv4Covert {      public static void main(String[] args) {          String ip = "10.108.149.219";          // step1: 分解IP字符串,并对应写对字节数组          byte[] ip1 = ipToBytes(ip);          // step2: 对字节数组里的存P地每个字节进行左移位处理,分别对应到整型变量的有效4个字节          int ip2 = bytesToInt(ip1);          System.out.println("整型ip ----> " + ip2);          // step3: 对整型变量进行右位移处理,恢复IP字符串          String ip3 = intToIp(ip2);          System.out.println("字符串ip---->" + ip3);      }      /**       * 把IP地址转化为int       * @param ipAddr       * @return int       */      public static byte[] ipToBytesByReg(String ipAddr) {          byte[] ret = new byte[4];          try {              String[] ipArr = ipAddr.split(".");              ret[0] = (byte) (Integer.parseInt(ipArr[0]) & 0xFF);              ret[1] = (byte) (Integer.parseInt(ipArr[1]) & 0xFF);              ret[2] = (byte) (Integer.parseInt(ipArr[2]) & 0xFF);              ret[3] = (byte) (Integer.parseInt(ipArr[3]) & 0xFF);              return ret;          } catch (Exception e) {              throw new IllegalArgumentException(ipAddr + " is invalid IP");          }      }      /**       * 第一步,高防服务器存P地把IP地址分解为一个btye数组       */      public static byte[] ipToBytes(String ipAddr) {          // 初始化字节数组,有效定义长度为4          byte[] ret = new byte[4];          try {              String[] ipArr = ipAddr.split(".");              // 将字符串数组依次写入字节数组              ret[0] = (byte) (Integer.parseInt(ipArr[0]));              ret[1] = (byte) (Integer.parseInt(ipArr[1]));              ret[2] = (byte) (Integer.parseInt(ipArr[2]));              ret[3] = (byte) (Integer.parseInt(ipArr[3]));              return ret;          } catch (Exception e) {              throw new IllegalArgumentException("invalid IP : " + ipAddr);          }      }      /**       * 根据位运算把 byte[] -> int       * 原理:将每个字节强制转化为8位二进制码,存P地然后依次左移8位,有效对应到Int变量的存P地4个字节中       */      public static int bytesToInt(byte[] bytes) {          // 先移位后直接强转的同时指定位数          int addr = bytes[3] & 0xFF;          addr |= ((bytes[2] <<8) & 0xFF00);          addr |= ((bytes[1] <<16) & 0xFF0000);          addr |= ((bytes[0] <<24) & 0xFF000000);          return addr;      }      /**       * 把int->string地址       *       * @param ipInt       * @return String       */      public static String intToIp(int ipInt) {          // 先强转二进制,服务器托管再进行移位处理          return new StringBuilder()                  // 右移3个字节(24位),有效得到IP地址的存P地第一段也就是byte[0],为了防止符号位是1也就是负数,服务器租用有效最后再一次& 0xFF                  .append(((ipInt & 0xFF000000) >> 24) & 0xFF).append(.)                  .append((ipInt & 0xFF0000) >> 16).append(.)                  .append((ipInt & 0xFF00) >> 8).append(.)                  .append((ipInt & 0xFF))                  .toString();      }  }  1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.84.85.86.87.88.89.90.91.92.93.94.95.96.

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 电脑更新后出现错误,如何解决?(应对电脑更新错误的实用指南)

    电脑更新后出现错误,如何解决?(应对电脑更新错误的实用指南)

    2025-11-05 03:57

  • 以老惠普笔记本使用U盘装系统的教程(一步步教你如何使用U盘为老惠普笔记本安装系统)

    以老惠普笔记本使用U盘装系统的教程(一步步教你如何使用U盘为老惠普笔记本安装系统)

    2025-11-05 03:28

  • 深入探索7560-r1745s的功能和特点(一款强大且多功能的7560-r1745s产品介绍)

    深入探索7560-r1745s的功能和特点(一款强大且多功能的7560-r1745s产品介绍)

    2025-11-05 01:56

  • 通过UEFI启动的系统安装Win7系统教程(详解Win7系统的UEFI安装步骤与注意事项)

    通过UEFI启动的系统安装Win7系统教程(详解Win7系统的UEFI安装步骤与注意事项)

    2025-11-05 01:44

网友点评