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     

原文地址:https://www.cnblogs.com/ivychang/p/8855545.html

时间: 2024-07-29 09:42:37

32位二进制IP地址与十进制IP地址互相转换的相关文章

python编写IP地址与十进制IP转换脚本

IP地址与十进制IP转换 #!/usr/bin/env python #encoding=utf-8 import re import sys import os def ten_to_two(ten_num): two_str = '' while ten_num != 1: a = ten_num % 2 two_str = two_str + str(a) ten_num = ten_num / 2 else: two_str = two_str + str(1) two_str = tw

《转载》二进制、八进制、十进制、十六进制之间转换

一. 十进制与二进制之间的转换 (1) 十进制转换为二进制,分为整数部分和小数部分 ① 整数部分 方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数.下面举例: 例:将十进制的168转换为二进制 得出结果 将十进制的168转换为二进制,(10101000)2 分析:第一步,将168除以2,商84,余数为0. 第二步,将商84除以2,商42余数为0.

二进制、八进制、十进制、十六进制之间转换

一. 十进制与二进制之间的转换 (1) 十进制转换为二进制,分为整数部分和小数部分 ① 整数部分 方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数.下面举例: 例:将十进制的168转换为二进制 得出结果 将十进制的168转换为二进制,(10101000)2 分析:第一步,将168除以2,商84,余数为0. 第二步,将商84除以2,商42余数为0.

二进制、八进制、十进制、十六进制的转换

1. 二进制转换成八进制 方法:3位二进制数按权展开相加得到1位八进制数.(注意事项,3位二进制转成八进制是从右到左开始转换,不足时补0). 例子:11101 = 011 101 = 35 2. 二进制转换成十进制 方法:把二进制数按权展开,相加即得十进制数. 例子:11101  = 1*2的四次方 + 1*2的三次方 + 1*2的二次方 + 0*2的一次方 + 1*2的零次方 = 29 3. 二进制转换成十六进制 方法:与二进制转八进制方法近似,八进制是取三合一,十六进制是取四合一.(注意事项

二进制、八进制、十进制与十六进制的转换

进制也就是进制位,对于接触过电脑的人来说应该都不陌生,我们常用的进制包括:二进制.八进制.十进制与十六进制,它们之间区别在于数运算时是逢几进一位. 二进制与十进制之间的转换 1 十进制转二进制 方法为:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止. (具体用法如下图) 2 二进制转十进制 方法为:把二进制数按权展开.相加即得十进制数. (具体用法如下图) 二进制与八进制之间的转换 1 二进制转八进制 方法为:3位二进制数按权展开相加

ip(点分十进制 &lt;==&gt; 二进制整数)之间的转换

linux的套接字部分比较容易混乱,在这里稍微总结一下. 地址转换函数在地址的文本表达式和它们存放在套接字地址结构中的二进制值进行转换. 地址转换函数有四个:其中inet_addr 和 inet_ntoa适用于IPv4,inet_pton 和 inet_ntop同时适于用IPv4和IPv6. 套接字地址结构分为IPv4套接字地址结构sockaddr_in和IPv6套接字地址结构sockaddr_in6.其中IPv4的套接字地址结构如下. IPv4套接字地址结构:(定义在<netinet/in.h

&lt;转&gt;32位移植到64位 注意事项

32bit-64bit porting work注意事项 64位服务器逐步普及,各条产品线对64位升级的需求也不断加大.在本文中,主要讨论向64位平台移植现有32位代码时,应注意的一些细小问题. 什么样的程序需要升级到64位? 理论上说,64位的操作系统,对32位的程序具有良好的兼容性,即使全部换成64位平台,依然可以良好的运行32位的程序.因此,许多目前在32位平台上运行良好的程序也许不必移植,有选择,有甄别的进行模块的升级,对我们工作的展开,是有帮助的. 什么样的程序需要升级到64位呢? 除

【转】32位移植到64位 注意事项 ----不错

原文网址:http://blog.csdn.net/w174504744/article/details/8678045 32bit-64bit porting work注意事项 64位服务器逐步普及,各条产品线对64位升级的需求也不断加大.在本文中,主要讨论向64位平台移植现有32位代码时,应注意的一些细小问题. 什么样的程序需要升级到64位? 理论上说,64位的操作系统,对32位的程序具有良好的兼容性,即使全部换成64位平台,依然可以良好的运行32位的程序.因此,许多目前在32位平台上运行良

为什么32位系统最大支持4G内存??我自己悟出来了 终于 。。。。。

今天突然开窍了,想通了..... 以下是我的抽象想法: 32位系统 这个 多少位 指的是 硬件的 一次性发送过来的位数,一个字节 等于8位,内存的一个存储单元就是一个字节,即8位. 也可以这样来想这个位,就是栈中内存地址的二进制 位数,那么 32位 的意思是 栈中内存地址最大是 32个11,即: 你会发现,32位系统的 最大内存地址为:2的32次方 - 1,最小地址地址为:0-----因为计算机都是从0开始的.32个0 也是 一个内存地址. 那么32位系统的 最大寻址空间是:0 — (2的32次