Java算法---整数与IP地址间的转换

本文介绍了一个使用Java编写的工具,该工具可以将IP地址转换为二进制格式,并进行相应的位操作。此外,还提供了将长整型数值转换为标准IP地址字符串的方法。这个实用工具适用于需要在网络编程中处理IP地址的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.util.Scanner;


/**
 * Created by Administrator on 2015/12/23.
 */
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while (sc.hasNext()){
            String str=sc.next();
            String str2=sc.next();
            StringBuffer sb=new StringBuffer();
            String strx="";
            for(int i=0;i<str.length();i++){


                if(str.charAt(i)!='.'){
                    strx+=str.charAt(i);
                }else {
                    sb.append(Tobin(Integer.toBinaryString(Integer.valueOf(strx))));
                    strx="";
                }
            }
            sb.append(Tobin(Integer.toBinaryString(Integer.valueOf(strx))));
            System.out.println(Long.parseLong(sb.toString(), 2));


            System.out.println(TobinLong(Long.toBinaryString(Long.valueOf(str2))));


        }
    }
    public static String Tobin(String strA){
        int len=strA.length();
        String strmx="";
      if(len==8){
          return strA;
      }else{
          for(int i=0;i<8-len;i++){
              strmx+="0";
          }
      }
        return strmx+strA;
    }




    public static String TobinLong(String strA){
        int len=strA.length();
        String strmx="";
        if(len!=32){
            for(int i=0;i<32-len;i++){
                strmx+="0";
            }
        strA=strmx+strA;
         }
      StringBuffer sb=new StringBuffer();
        while (strA.length()!=0){
            sb.append(Integer.valueOf(strA.substring(0,8),2)+".");
            strA=strA.substring(8);
        }
        return sb.substring(0,sb.length()-1);
    }
}

### Java中验证IP地址正确性的算法Java中,可以通过多种方法来验证IP地址的合法性。以下将介绍两种常用的方法:**正则表达式**和**字符串分割**[^1]。 #### 方法一:使用正则表达式验证IPv4地址 正则表达式是一种强大的工具,可以用来匹配特定格式的字符串。对于IPv4地址,其格式为四个由点分隔的十进制数,每个数的范围是0到255。以下是基于正则表达式的实现代码: ```java public class IPAddressValidator { private static final String IPV4_REGEX = "^(\\d{1,3}\\.){3}\\d{1,3}$"; // 匹配IPv4地址的基本正则表达式 public static boolean isValidIPv4(String ip) { if (ip == null || ip.isEmpty()) { return false; } if (!ip.matches(IPV4_REGEX)) { return false; } String[] parts = ip.split("\\."); // 分割字符串 for (String part : parts) { int value = Integer.parseInt(part); // 转换整数 if (value < 0 || value > 255) { // 验证范围 return false; } } return true; } public static void main(String[] args) { System.out.println(isValidIPv4("192.168.1.1")); // 输出: true System.out.println(isValidIPv4("256.100.50.25")); // 输出: false } } ``` 这种方法通过正则表达式初步过滤不符合格式的字符串,并进一步验证每个部分是否在0到255之[^1]。 #### 方法二:使用`InetAddress`类验证IP地址 Java标准库中的`InetAddress`类提供了内置方法来验证IP地址的有效性。以下是一个示例代码: ```java import java.net.InetAddress; import java.net.UnknownHostException; public class InetAddressValidator { public static boolean isValidIPAddress(String ip) { try { InetAddress address = InetAddress.getByName(ip); return address.getHostAddress().equals(ip); // 确保输入解析后的地址一致 } catch (UnknownHostException e) { return false; } } public static void main(String[] args) { System.out.println(isValidIPAddress("192.168.1.1")); // 输出: true System.out.println(isValidIPAddress("invalid.ip")); // 输出: false } } ``` 此方法利用`InetAddress.getByName`尝试解析输入的字符串IP地址对象,并检查解析结果是否原始输入一致[^2]。 ### 注意事项 - 正则表达式方法适用于需要完全自定义逻辑的场景。 - `InetAddress`方法更加简洁,但依赖于Java标准库的功能。 - 如果需要支持IPv6地址,则需要额外扩展验证逻辑或使用更复杂的正则表达式[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值