根据IP和子网掩码计算网络段内全部地址

一个神奇的需求,给个TXT上吗都是IP和子网掩码

127.0.0.1,255.255.255.0;
127.1.1.1,255.255.255.0;
127.1.1.118,255.255.255.0;

就类似这样吧,根据这个求出来全部的地址,然后再生产一个TXT…
(能有3k多个,为啥要TXT至今入库不好吗
还挺有意思…
直接代码吧
找了个工具类特别好用

package com.dxm;

import java.net.InetAddress;
/**
 * 用于IP和整数之间的相互转换
 * @author scz
 *
 */
public  class IPv4Util {
   
    private final static int INADDRSZ = 4;
    /**
     * 把IP地址转化为字节数组
     * @param ipAddr
     * @return byte[]
     */
    public static byte[] ipToBytesByInet(String ipAddr) {
   
        try {
   
            return InetAddress.getByName(ipAddr).getAddress();
        } catch (Exception e) {
   
            throw new IllegalArgumentException(ipAddr + " is invalid IP");
        }
    }
    /**
     * 把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");
        }
    }
    /**
     * 字节数组转化为IP
     * @param bytes
     * @return int
     */
    public static String bytesToIp(byte[] bytes) {
   
        return new StringBuffer().append(bytes[0] & 0xFF).append('.').append(
                bytes[1] & 0xFF).append('.').append(bytes[2] & 0xFF)
                .append('.').append(bytes[3] & 0xFF).toString();
    }
    /**
     * 根据位运算把 byte[] -> int
     * @param bytes
     * @return int
     */
    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;
    }
    /**
     * 把IP地址转化为int
     * @param ipAddr
     * @return int
     */
    public static int ipToInt(String ipAddr) {
   
        try {
   
            return bytesToInt(ipToBytesByInet(ipAddr));
        } catch (Exception e
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要根据IP地址子网掩码获取IP,需要进行以下步骤: 1. 将IP地址子网掩码转换为二进制数。 2. 对IP地址子网掩码进行按位与操作,得到网络地址。 3. 对子网掩码进行按位取反操作,得到反码。 4. 对反码进行按位与操作,得到可用主机数。 5. 将可用主机数转换为二进制数,并计算出主机位数。 6. 将主机位数转换为十进制数,并计算出每个主机位的取值范围。 7. 将网络地址和可用主机数组合起来,得到IP。 例如,对于IP地址192.168.1.100和子网掩码255.255.255.0,进行如下操作: 1. 将IP地址子网掩码转换为二进制数: IP地址:11000000.10101000.00000001.01100100 子网掩码:11111111.11111111.11111111.00000000 2. 对IP地址子网掩码进行按位与操作,得到网络地址网络地址:11000000.10101000.00000001.00000000(192.168.1.0) 3. 对子网掩码进行按位取反操作,得到反码: 反码:00000000.00000000.00000000.11111111 4. 对反码进行按位与操作,得到可用主机数: 可用主机数:00000000.00000000.00000000.11111110(254) 5. 将可用主机数转换为二进制数,并计算出主机位数: 可用主机数二进制数:11111110 主机位数:7 6. 将主机位数转换为十进制数,并计算出每个主机位的取值范围: 主机位数十进制数:7 每个主机位的取值范围:0~127、128~255 7. 将网络地址和可用主机数组合起来,得到IPIP:192.168.1.0~192.168.1.255

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值