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地址和子网前缀长度是有效的。在实际应用中,你可能需要添加一些输入验证。

相关文章
|
5月前
|
Java
Java 如何根据域名查询对应的ip地址
Java 如何根据域名查询对应的ip地址
275 3
|
3天前
|
存储 Java 定位技术
【Java】根据IP地址获取省市
【Java】根据IP地址获取省市
12 1
|
9天前
|
存储 Java
Java动态转发代理IP的实现方法
Java动态转发代理IP的实现方法
24 11
|
10天前
|
安全 Java API
java借助代理ip,解决访问api频繁导致ip被禁的问题
java借助代理ip,解决访问api频繁导致ip被禁的问题
|
11天前
|
网络协议 Java API
深度剖析:Java网络编程中的TCP/IP与HTTP协议实践
【4月更文挑战第17天】Java网络编程重在TCP/IP和HTTP协议的应用。TCP提供可靠数据传输,通过Socket和ServerSocket实现;HTTP用于Web服务,常借助HttpURLConnection或Apache HttpClient。两者结合,构成网络服务基础。Java有多种高级API和框架(如Netty、Spring Boot)简化开发,助力高效、高并发的网络通信。
|
2月前
|
网络协议 Java 数据安全/隐私保护
如何使用Java实现基于TCP/IP协议的即时通讯系统
TCP/IP协议是现代计算机网络通信中最常用的协议之一,而即时通讯系统则是当前互联网应用中非常普遍的一种场景。本文将介绍如何使用Java编程语言来实现基于TCP/IP协议的即时通讯系统,包括建立服务端和客户端、发送和接收消息等方面的详细步骤和示例。
|
4月前
|
网络协议 Java 程序员
java网络编程什么是TCP/IP协议栈?
java网络编程什么是TCP/IP协议栈?
33 2
|
4月前
|
网络协议 安全 Java
Java网络编程入门指南:TCP/IP协议与Socket通信
Java网络编程入门指南:TCP/IP协议与Socket通信
59 1
|
7月前
|
Java
编程作业(2) - 编程题 3. ip地址判定(Java)
编程作业(2) - 编程题 3. ip地址判定(Java)
|
8月前
|
Java
Java如何获取请求的ip 地址?
Java如何获取请求的ip 地址
131 0