PTA 7-9 IP地址转换 题解

PTA 7-9 IP地址转换 题解

这一题本身题目非常简单,但关于几个内置字符串的处理函数很有意思:

题目:

一个IP地址是用四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。

输入格式:
输入在一行中给出32位二进制字符串。

输出格式:
在一行中输出十进制格式的IP地址,其由4个十进制数组成(分别对应4个8位的二进制数),中间用“.”分隔开。

输入样例:
11001100100101000001010101110010
输出样例:
204.148.21.114

满分代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args){

        Scanner scan = new Scanner(System.in);
        String str = " ";
        str += scan.nextLine();
        int len = str.length();
        System.out.println( work(str.substring(1, 9)) + "." + work(str.substring(9, 17)) + "." + work(str.substring(17, 25)) + "." + work(str.substring(25, 33)) );

    }

    public static int work(String st){
        int len = st.length();
        String str = new StringBuilder(st).reverse().toString();
        int ans = 0;
        int tmp = 1;
        for(int i=0; i< len; i++, tmp*=2) ans += (int)(str.charAt(i) - '0') * tmp;
        return ans;

    }

}

值得注意的是:

  • String.substring(begin, end) 可以截取并返回范围为 \(\texttt{[begin, end)}\) 的字符串。
  • StringBuilder(String).reverse().toString() 可以反转字符串,但由于返回的是 StringBuilder 对象,我们还需要一个 toString 来转换回 ·String` 对象。
  • 采用类似 秦九韶算法 (注意不是秦九韶公式)进行进制转换运算。
  • \(\texttt{java}\) 下不能采用类似 \(\texttt{C++}\)str[x] 的字符串方式调用一个字符,应该使用 str.charAt(x) .
posted @ 2024-10-22 14:45  [丘李]Chilllee  阅读(116)  评论(0)    收藏  举报