32位二进制IP地址与十进制IP地址互相转换

Posted 时无重至,华不再扬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了32位二进制IP地址与十进制IP地址互相转换相关的知识,希望对你有一定的参考价值。

代码:

 1 import java.util.List;
 2 import java.util.ArrayList;
 3 import java.util.Scanner;  
 4 public class Transformation {
 5   public static void main(String[] args)throws Exception {  
 6               String a;
 7               boolean b;
 8                 Scanner in=new Scanner(System.in);  
 9           
10                     System.out.println("请输入IP地址或32位2进制数");  
11                     a=in.next();  
12                     if((b=a.matches("\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}"))) {
13                     System.out.println("IP地址转2进制");  
14                         String[] array = a.split("\\\\.");
15                   /*  for ( int i=0; i < array.length; i++) {
16                             System.out.println(array[i]);
17                             }*/
18                         int[] intTemp = new int[array.length];
19                         for (int i=0; i <array.length; i++)
20                             {
21                             intTemp[i] = Integer.parseInt(array[i]);
22                             }
23                         for (int i=0;i<intTemp.length ;i++)
24                         {
25                             int c =intTemp[i];
26                             String binaryString = Integer.toBinaryString(c);//1111
27                             int binaryInt = Integer.parseInt(binaryString);//1111
28                             System.out.print(String.format("%08d",binaryInt));//00001111
29                         }
30                }
31                     else if(b=a.matches("\\\\d{32}")) {
32                     System.out.println("2进制转iP地址");  
33                  /*     
34                      for(int i = 0; i < a.length(); i++){
35                          arr[i] = a.substring(0,8);
36                          result.add(tmp)
37                          a= a.substring(8);
38                         // System.out.println(arr[i]);*/
39                          List<String> result = new ArrayList<String>();
40                             int iPos = 0;
41                             int iLen = a.length();
42                             while(iLen>=8){
43                                 String tmp = a.substring(0, 8);
44                                 result.add(tmp);
45                                 a= a.substring(8);
46                                 iLen = a.length();
47                             }
48                             for(String st:result){
49                                
50                                 System.out.print(Integer.parseInt(st,2));
51                           
52                                 System.out.print(".");
53                             
54                             }
55                     
56                         
57                          }
58                             
59                 
60                     else {
61                     System.out.println("非法的输入!!!!"); 
62         
63                 }
64             }  
65   
66         }
67     

 

以上是关于32位二进制IP地址与十进制IP地址互相转换的主要内容,如果未能解决你的问题,请参考以下文章

Python—IP地址与整数之间的转换

Linux网络基础网络子网划分基础知识(IP地址,子网)

IP地址子网掩码网关的关系

IP地址子网掩码网关的关系

[PTA]实验8-2-10 IP地址转换

怎样判断IP地址的非法性?