十六进制转换为八进制
刚开始以Java中自带的语言编写的
但是因为检验数据太大 没办法使用
后来使用先把十六进制转换为二进制
但是其中因为使用字符串的操作 使得运行内存超限
后来做的好烦
直接使用别人的代码了
态度太不端正
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
String[] sts = new String[n+1];
for(int i=0;i<n;i++){
sts[i] = scanner.next();
}
scanner.close();
for(int i=0;i<n;i++){
String strBinary = toBinary(sts[i]);
int len_strBin = strBinary.length();
if(len_strBin%3==1) strBinary = “00” + strBinary;
if(len_strBin%3==2) strBinary = “0” + strBinary;
String strOctal = toOctal(strBinary);
System.out.println(strOctal);
}
}
private static String toOctal(String strBinary) {
int len = strBinary.length();
int k;
StringBuffer stb = new StringBuffer();
if(strBinary.substring(0, 3).equals(“000”)) k=3;
else k=0;
for(int i=k;i<len-2;i+=3){
String string = strBinary.substring(i,i+3);
if(string.equals(“000”)) stb.append(“0”);
else if(string.equals(“001”)) stb.append(“1”);
else if(string.equals(“010”)) stb.append(“2”);
else if(string.equals(“011”)) stb.append(“3”);
else if(string.equals(“100”)) stb.append(“4”);
else if(string.equals(“101”)) stb.append(“5”);
else if(string.equals(“110”)) stb.append(“6”);
else if(string.equals(“111”)) stb.append(“7”);
}
return stb.toString();
}
private static String toBinary(String strHex) {
int len_str = strHex.length();
StringBuffer stb = new StringBuffer();
for(int i=0;i<len_str;i++){
switch (strHex.charAt(i)) {
case ‘0’: stb.append(“0000”); break;
case ‘1’: stb.append(“0001”); break;
case ‘2’: stb.append(“0010”);break;
case ‘3’: stb.append(“0011”); break;
case ‘4’: stb.append(“0100”); break;
case ‘5’: stb.append(“0101”); break;
case ‘6’: stb.append(“0110”); break;
case ‘7’: stb.append(“0111”); break;
case ‘8’: stb.append(“1000”); break;
case ‘9’: stb.append(“1001”); break;
case ‘A’: stb.append(“1010”); break;
case ‘B’: stb.append(“1011”); break;
case ‘C’: stb.append(“1100”); break;
case ‘D’: stb.append(“1101”); break;
case ‘E’: stb.append(“1110”); break;
case ‘F’: stb.append(“1111”); break;
default: break;
}
}
return stb.toString();
}
}
还没有评论,来说两句吧...