zoukankan      html  css  js  c++  java
  • JAVA IP地址用一个整形表示,IP地址和Int互转

    IP 地址分为4个字段,每个字段范围是0-255,刚好用一个字段可以表示,JAVA一个int是4个字节,每个字节表示一个IP 段。

    代码:

    public class TestIPInt extends TestCase {

    public void testIPToInt() {
    int ip1 = 1;
    int ip2 = 1;
    int ip3 = 1;
    int ip4 = 2;
    //1.1.1.2 ==16843010
    //255.255.255.255 == -1
    int ipint = ipToInt(ip1, ip2, ip3, ip4);
    System.out.println("ipint:" + ipint);
    int[] ipArr = intToIp(ipint);
    for (int i = 0; i < 4; i++) {
    System.out.print(ipArr[i] + ".");
    }
    System.out.println();
    }

    /**
    * ip to int
    * sample:192 168 1 2
    *
    * @param ip1
    * @param ip2
    * @param ip3
    * @param ip4
    * @return
    */
    public int ipToInt(int ip1, int ip2, int ip3, int ip4) {
    return ipToInt(new int[]{ip1, ip2, ip3, ip4});
    }

    public int ipToInt(int[] ipArr) {
    int ipInt = 0;
    for (int i = 0; i < ipArr.length; i++) {
    ipInt <<= 8;
    ipInt ^= (byte) ipArr[i] & 255;
    }
    return ipInt;
    }


    public int[] intToIp(int ipInt) {
    int[] ipArr = new int[4];
    for (int i = 0; i < 4; i++) {
    ipArr[3 - i] ^= (byte) ipInt & 255;
    ipInt >>>= 8;
    }
    return ipArr;
    }

    private int byteToInt(byte[] bytes) {
    // return Bytes.toInt(bytes, 0);
    int n = 0;
    int offset = 0;
    int length = 4;
    for (int i = offset; i < offset + length; ++i) {
    n <<= 8;
    n ^= bytes[i] & 255;
    }
    return n;

    }

    private byte[] intToByte(int val) {
    int offset = 0;
    byte[] bytes = new byte[4];
    for (int i = offset + 3; i > offset; --i) {
    bytes[i] = (byte) val;
    val >>>= 8;
    }
    bytes[offset] = (byte) val;
    return bytes;
    }
    }
  • 相关阅读:
    JavaScript 数组去重,并按大小排序
    JavaScript 把秒转换成分钟,比如100s转换成 01:40
    JavaScript style.left、offsetLeft的问题
    JavaScript画出一个星罗密布
    bootstrap轮播图怎么居中
    JavaScript 把数组里的0放到后面
    JavaScript----- Moving Zeros To The End
    5.2 Array类型的方法汇总
    5.2 Array类型介绍
    5.1 JS中Object类型
  • 原文地址:https://www.cnblogs.com/biginfo/p/6483589.html
Copyright © 2011-2022 走看看