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).

浙公网安备 33010602011771号