蓝桥杯---十六进制转八进制
2018-03-01 20:37
337 查看
package com.huat.lanqiao; import java.util.Scanner; /* *@author: *@see功能介绍:将十六进制转换为八进制 *@vesion版本号:JDK1.8 *2018年2月15日 */ public class HexToOct { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); String[] temp = new String[n+1]; int i; //接收输入 for( i = 0; i < n; i++) { temp[i] = sc.next(); } sc.close(); for(i =0; i < n;i++) { String strBinary = toBinary(temp[i]); //得到二进制 int length = strBinary.length();
//这样的做法保证得到的二进制位数是3的整数倍 if(length % 3 == 1) { strBinary = "00" + strBinary; } if (length % 3 == 2) { strBinary = "0" + strBinary; } String strOct = toOct(strBinary);//二进制转换八进制 System.out.println(strOct); } } public static String toBinary(String t) { int strlen = t.length(); StringBuffer str = new StringBuffer(); for (int i = 0; i < strlen; i++) { switch(t.charAt(i)) { case '0' : str.append("0000");break; case '1' : str.append("0001");break; case '2' : str.append("0010");break; case '3' : str.append("0011");break; case '4' : str.append("0010");break; case '5' : str.append("0101");break; case '6' : str.append("0110");break; case '7' : str.append("0111");break; case '8' : str.append("1000");break; case '9' : str.append("1001");break; case 'A' : str.append("1010");break; case 'B' : str.append("1011");break; case 'C' : str.append("1100");break; case 'D' : str.append("1101");break; case 'E' : str.append("1110");break; case 'F' : str.append("1111");break; default:break; } } return str.toString(); } public static String toOct(String s) { int strlen = s.length(); int k; StringBuffer str = new StringBuffer(); //过滤掉开始就是000XXXX的情况 if(s.subSequence(0, 3).equals("000")) { k = 3; } else { k = 0; } for (int i = k; i < strlen-2; i+=3) { String ss = s.substring(i,i+3); // System.out.println(ss); if(ss.equals("000")) str.append("0"); else if(ss.equals("001")) str.append("1"); else if(ss.equals("010")) str.append("2"); else if(ss.equals("011")) str.append("3"); else if(ss.equals("100")) str.append("4"); else if(ss.equals("101")) str.append("5"); else if(ss.equals("110")) str.append("6"); else if(ss.equals("111")) str.append("7"); } return str.toString(); } }
相关文章推荐
- 蓝桥杯 基础练习 十六进制转八进制
- 蓝桥杯基础训练十六进制转八进制(不简单)
- 蓝桥杯练习十六进制转八进制
- 【蓝桥杯】基础练习 十六进制转八进制
- 蓝桥杯 十六进制转八进制输出
- "蓝桥杯“基础练习:十六进制转八进制
- 蓝桥杯 基础练习 十六进制转八进制
- 蓝桥杯 基础练习 十六进制转八进制
- 蓝桥杯:十六进制转八进制
- 蓝桥杯-基础练习 十六进制转八进制
- [蓝桥杯]十六进制转八进制
- 蓝桥杯-基础练习12 十六进制转八进制
- 蓝桥杯--十六进制转化为八进制(通过二进制作为中间媒介)
- 蓝桥杯BASIC-12十六进制转八进制
- 蓝桥杯 BASIC-12 十六进制转八进制
- 蓝桥杯练习题—— 十六进制转八进制
- 蓝桥杯- 基础练习 十六进制转八进制
- 蓝桥杯 十六进制转八进制 78ms
- 蓝桥杯:十六进制转八进制的高效算法(正确版)
- 蓝桥杯 基础练习 十六进制转八进制