package?Lanqiao_test01;
import?java.io.BufferedReader;
import?java.io.InputStreamReader;
public?class?HexadecimalToOctal?{
public?static?void?main(String[]?args)?throws?Exception{
System.out.println("請(qǐng)按輸入格式輸入:");
BufferedReader?br?=?new?BufferedReader(new?InputStreamReader(System.in));
int?n?=?Integer.parseInt(br.readLine());?//?第一行:?行個(gè)數(shù)
String[]?str?=?new?String[n];
for(int?i=0;?i<str.length;?++i){
str[i]?=?br.readLine();
}
for(int?j=0;?j<n;?++j){
transform1(str[j]);
}
}
/* transform1:?將輸入的十六進(jìn)制轉(zhuǎn)化為二進(jìn)制
?*? 1.?將十六進(jìn)制字符串轉(zhuǎn)化為字符數(shù)組c1
?*??2.?將單個(gè)十六進(jìn)制字符轉(zhuǎn)化為二進(jìn)制數(shù)(1位16進(jìn)制?對(duì)應(yīng)?4位二進(jìn)制)?用sb接收
*?*/
public?static?void?transform1(String?s1){
char[]?c1?=?new?char[s1.length()];
c1?=?s1.toCharArray();
StringBuffer?sb?=?new?StringBuffer();
for(int?i=0;?i<c1.length;?++i){
switch(c1[i]){
case?'0':
sb.append("0000");
break;
case?'1':
sb.append("0001");
break;
case?'2':
sb.append("0010");
break;
case?'3':
sb.append("0011");
break;
case?'4':
sb.append("0100");
break;
case?'5':
sb.append("0101");
break;
case?'6':
sb.append("0110");
break;
case?'7':
sb.append("0111");
break;
case?'8':
sb.append("1000");
break;
case?'9':
sb.append("1001");
break;
case?'A':
sb.append("1010");
break;
case?'B':
sb.append("1011");
break;
case?'C':
sb.append("1100");
break;
case?'D':
sb.append("1101");
break;
case?'E':
sb.append("1110");
break;
case?'F':
sb.append("1111");
break;
}
}
transform2(sb);
}
/*
?*?transform2:?二進(jìn)制?轉(zhuǎn)?八進(jìn)制?并輸出結(jié)果
?*? 轉(zhuǎn)換算法:?1. 增補(bǔ)二進(jìn)制位數(shù),以3位二進(jìn)制數(shù)表示1位八進(jìn)制數(shù).若長(zhǎng)度不合適,進(jìn)行補(bǔ)0或減0操作
?*? 2.??對(duì)二進(jìn)制與十進(jìn)制之間進(jìn)行轉(zhuǎn)化,?用sb2進(jìn)行接收
?*?*/
public?static?void?transform2(StringBuffer?sb){
int?sbLen?=?sb.length();
if(sbLen?%?3?==?0){
if(sb.substring(0,?3).equals("000"))
sb.delete(0,?3);
}
if(sbLen?%?3?==?1){
if(sb.substring(0,?1).equals("0"))
sb.delete(0,?1);
else
sb.insert(0,?"00");
}
if(sbLen?%?3?==?2){
if(sb.substring(0,?2).equals("00"))
sb.delete(0,?2);
else
sb.insert(0,?"0");
}
//001?010?101?...
int?n?=?sb.length()/3;
StringBuffer?sb2?=?new?StringBuffer();
for(int?i=0;?i<n;?i++){
if("000".equals(sb.substring(i*3,?i*3+3)))?//0,3??3,6???i*3,?i*3+3??
sb2.append("0");
else?if("001".equals(sb.substring(i*3,?i*3+3)))
sb2.append("1");
else?if("010".equals(sb.substring(i*3,?i*3+3)))
sb2.append("2");
else?if("011".equals(sb.substring(i*3,?i*3+3)))
sb2.append("3");
else?if("100".equals(sb.substring(i*3,?i*3+3)))
sb2.append("4");
else?if("101".equals(sb.substring(i*3,?i*3+3)))
sb2.append("5");
else?if("110".equals(sb.substring(i*3,?i*3+3)))
sb2.append("6");
else?if("111".equals(sb.substring(i*3,?i*3+3)))
sb2.append("7");
}
System.out.println(sb2);
}
}
2015-12-29
我表示這是java雖然不會(huì)但是主題結(jié)構(gòu)應(yīng)該和差c++差不多