• 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;
    }
    }
  • 相关阅读:
    iOS input disabled显示不清楚
    钉钉小程序——JSAPI
    留言板
    友链
    mysql---存储引擎
    union与limit
    spring--setter注入
    spring---生命周期
    sql03-连接查询
    sql01--认识表
  • 原文地址:https://www.cnblogs.com/biginfo/p/6483589.html
Copyright © 2020-2023  润新知