博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
G IP地址转换
阅读量:5845 次
发布时间:2019-06-18

本文共 2107 字,大约阅读时间需要 7 分钟。

IP地址总是由4个0-255的数字以"."隔开的形式来显示给用户,例如192.168.0.1。在计算机中,一个IP地址用4字节来依次存储其从右到左的4个数字部分,每个字节(8比特)以2进制的形式存储相应的IP地址数字,请你实现一个从IP地址的显示格式到计算机存储格式的转换。

Input 每行输入一个IP地址,如果输入为-1,结束输入

Output 每行输出一个IP地址在计算机存储中以二进制表示的4字节内容

Sample Input 192.168.0.1 255.255.0.0 1.0.0.1 -1

Sample Output 11000000101010000000000000000001 11111111111111110000000000000000 00000001000000000000000000000001

import java.util.ArrayList;import java.util.List;import java.util.Scanner;/** * Created by Fant.J. * 2017/12/6 19:20 */public class Main {    private static List list = new ArrayList();    private static String ipAddr = null;    private static String result = "";    private static int count = 1;    public static void main(String []args){        Scanner scanner = new Scanner(System.in);        ipAddr = scanner.nextLine();        while (! ipAddr.contains("-1")){            String[] datas = ipAddr.split("\\.");            int data1 = Integer.valueOf(datas[0]);            int data2 = Integer.valueOf(datas[1]);            int data3 = Integer.valueOf(datas[2]);            int data4 = Integer.valueOf(datas[3]);            pincou(data4);            pincou(data3);            pincou(data2);            pincou(data1);           // System.out.println(result.length());            list.add(result);            //初始化 三个参数            result="";            count = 1;            ipAddr = scanner.nextLine();        }        for (Object item:list){            System.out.println(item);        }    }    public static void pincou(int data){        while (true){            int yushu = data%2;            result = yushu+result;            data /= 2;            if (data==0){                //判断下是否够8个字节                int judge = result.length();                if (judge<8*count){                    for (int i = 0;i<8*count-judge;i++){                        result = 0+result;                    }                }                count++;                break;            }        }    }}复制代码

做的过程中有个逻辑错误,找了好长时间分享给大家。 就是在获取result长度当作for循环条件的时候。我起初是用result.lenth() 获取。导致字节数不够8(不满足我的要求)就运行下面程序。之后我先把这个长度赋值给变量judge,然后在做循环。希望大家以后用循环,切忌把动态改变的东西当作条件来判断

转载地址:http://wphcx.baihongyu.com/

你可能感兴趣的文章
容易被忽略CSS特性
查看>>
Linux内核中进程上下文、中断上下文、原子上下文、用户上下文的理解【转】...
查看>>
在RELEASE版本中快速定位DATA ABORT的方法
查看>>
Constraint4:default约束
查看>>
[SDK2.2]Windows Azure Virtual Network (2) 创建简单的Virtual Network
查看>>
expdp&impdp只导出表结构的方法
查看>>
清理线上Redis没有设置过期时间的key
查看>>
.Net Discovery 系列之二--string从入门到精通(下)
查看>>
ASP.NET 进阶】仿百度文库文档在线预览(支持格式.pdf,.doc,docx,xls,xlsx,.ppt,pptx)...
查看>>
DNS 隐蔽通道工具资料汇总
查看>>
初识Redux-Saga
查看>>
强大的jQuery选择器 (详解)[转]
查看>>
python 升级pip
查看>>
break、return、continue的区别
查看>>
在Studio中使用Access数据库时,提示“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”...
查看>>
centos7 安装mysql5.7.11注意事项
查看>>
Visual Studio DSL 入门 10---完善状态机案例
查看>>
Grafana中进行MySQL查询-时区问题
查看>>
Linux内核系列—C语言中内嵌汇编 asm __volatile__,asm__volatile_【转】
查看>>
git/ssh捋不清的几个问题
查看>>