java 如何将ip 1.2.3.4 变成1.2.3.0/24

简介: 如果你想手动实现而不使用第三方库,你可以按照如下的方式进行。以下是一个手动实现的简单示例:```javaimport java.net.InetAddress;import java.net.UnknownHostException;public class IpToCidrConverter { public static void main(String[] args) { String ipAddress = "1.2.3.4"; int subnetPrefixLength = 24; try {

如果你想手动实现而不使用第三方库,你可以按照如下的方式进行。以下是一个手动实现的简单示例:

import java.net.InetAddress;
import java.net.UnknownHostException;

public class IpToCidrConverter {
   
    public static void main(String[] args) {
   
        String ipAddress = "1.2.3.4";
        int subnetPrefixLength = 24;

        try {
   
            String cidrNotation = convertToCidr(ipAddress, subnetPrefixLength);
            System.out.println("CIDR Notation: " + cidrNotation);
        } catch (UnknownHostException e) {
   
            e.printStackTrace();
        }
    }

    private static String convertToCidr(String ipAddress, int subnetPrefixLength) throws UnknownHostException {
   
        InetAddress inetAddress = InetAddress.getByName(ipAddress);
        byte[] address = inetAddress.getAddress();

        // Convert the IP address bytes to an integer
        int ipAddressInt = 0;
        for (byte b : address) {
   
            ipAddressInt = (ipAddressInt << 8) | (b & 0xFF);
        }

        // Create a bitmask based on the subnet prefix length
        int subnetMask = 0xFFFFFFFF << (32 - subnetPrefixLength);

        // Apply the bitmask to the IP address to get the network address
        int networkAddress = ipAddressInt & subnetMask;

        // Convert the network address back to byte array
        byte[] networkAddressBytes = new byte[4];
        for (int i = 0; i < 4; i++) {
   
            networkAddressBytes[i] = (byte) ((networkAddress >> (24 - i * 8)) & 0xFF);
        }

        // Format the CIDR notation
        StringBuilder cidrNotation = new StringBuilder();
        for (int i = 0; i < 4; i++) {
   
            cidrNotation.append((networkAddressBytes[i] & 0xFF));
            if (i < 3) {
   
                cidrNotation.append(".");
            }
        }
        cidrNotation.append("/").append(subnetPrefixLength);

        return cidrNotation.toString();
    }
}

这个手动实现的代码与使用第三方库的版本相似,但是它直接处理了CIDR表示法的格式。你可以根据需要调整输入参数。请注意,这个示例假设输入的IP地址和子网前缀长度是有效的。在实际应用中,你可能需要添加一些输入验证。

相关文章
Java 如何根据域名查询对应的ip地址
Java 如何根据域名查询对应的ip地址
610 3
|
7月前
|
存储
JavaWeb如何获取当前访问IP
JavaWeb如何获取当前访问IP
152 0
|
6月前
|
网络协议 安全 Java
Java网络编程入门涉及TCP/IP协议理解与Socket通信。
【6月更文挑战第21天】Java网络编程入门涉及TCP/IP协议理解与Socket通信。TCP/IP协议包括应用层、传输层、网络层和数据链路层。使用Java的`ServerSocket`和`Socket`类,服务器监听端口,接受客户端连接,而客户端连接指定服务器并交换数据。基础示例展示如何创建服务器和发送消息。进阶可涉及多线程、NIO和安全传输。学习这些基础知识能助你构建网络应用。
53 1
|
29天前
|
数据采集 Java API
java怎么设置代理ip:简单步骤,实现高效网络请求
本文介绍了在Java中设置代理IP的方法,包括使用系统属性设置HTTP和HTTPS代理、在URL连接中设置代理、设置身份验证代理,以及使用第三方库如Apache HttpClient进行更复杂的代理配置。这些方法有助于提高网络请求的安全性和灵活性。
|
7月前
|
网络协议 Java
Java的Socket编程:TCP/IP与UDP深入探索
Java的Socket编程:TCP/IP与UDP深入探索
112 0
|
6月前
|
网络协议 Java 程序员
TCP/IP协议栈是网络通信基础,Java的`java.net`包提供工具,使开发者能利用TCP/IP创建网络应用
【6月更文挑战第23天】 **TCP/IP协议栈是网络通信基础,它包含应用层(HTTP, FTP等)、传输层(TCP, UDP)、网络层(IP)、数据链路层(帧, MAC地址)和物理层(硬件信号)。Java的`java.net`包提供工具,使开发者能利用TCP/IP创建网络应用,如Socket和ServerSocket用于客户端和服务器通信。**
57 3
|
6月前
|
Java Apache Maven
蓝易云 - java判断ip是否为指定网段
在这个例子中,我们首先创建了一个 `SubnetUtils`对象,它表示一个子网。然后,我们使用 `isInRange`方法来检查指定的IP地址是否在这个子网内。如果IP地址在子网内,`isInRange`方法将返回 `true`,否则返回 `false`。
122 3
|
5月前
|
Java Redis 数据安全/隐私保护
Redis13的Java客户端-Jedis快速入门,建立连接的写法,ip地址,设置密码密码,选择库的写法
Redis13的Java客户端-Jedis快速入门,建立连接的写法,ip地址,设置密码密码,选择库的写法
|
6月前
|
数据采集 Java 数据安全/隐私保护
使用Java进行网络采集:代理IP与参数传递详解
Java参数传递是按值传递,包括对象引用的值。当传递对象时,方法内部修改对象内容会影响原始对象,但不能改变原始引用。示例展示了如何在爬虫代理中使用此机制,通过`ProxySettings`类传递代理信息,方法内可访问但不能更改原始对象。理解这一机制对编写高效无错的Java代码至关重要。
使用Java进行网络采集:代理IP与参数传递详解
|
7月前
|
存储 Java
Java动态转发代理IP的实现方法
Java动态转发代理IP的实现方法
308 11