蓝桥杯——十六进制转八进制(Java实现)
来源:互联网 发布:李嘉欣真人知乎 编辑:程序博客网 时间:2024/04/30 02:10
十六进制转八进制
问题描述:
一、借助jdk中自带的转换函数
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++){long a = Long.valueOf(sts[i], 16);String b = Long.toOctalString(a);System.out.println(b);}}}
发现根本通过不了,因为这样程度根本不够
二、借助二进制自己实现,这样可以输入的范围就可以变大了
import java.util.Scanner;public class BASIC12_16to8 {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");/*switch (Integer.valueOf(strBinary.substring(i, i+3))) {case 000: stb.append("0"); break;case 001: stb.append("1"); break;case 010: stb.append("2"); break;case 011: stb.append("3"); break;case 100: stb.append("4"); break;case 101: stb.append("5"); break;case 110: stb.append("6"); break;case 111: stb.append("7"); break;default:break;}*/}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();}}
参考文章(写的非常好):
http://www.cnblogs.com/loveluking/p/6055385.html
http://blog.csdn.net/nn179/article/details/7967569
0 0
- 蓝桥杯——十六进制转八进制(Java实现)
- 十六进制转八进制(Java实现)
- 蓝桥杯-十六进制转八进制(java)
- 蓝桥杯JAVA 十六进制转八进制
- 蓝桥杯练习题—— 十六进制转八进制
- 16蓝桥杯基础—十六进制转八进制
- c蓝桥杯高效实现十六进制转八进制
- java 练习 -蓝桥杯-十六进制转八进制
- 基础练习-十六进制转八进制 -JAVA蓝桥杯
- 蓝桥杯 基础练习 十六进制转八进制 JAVA
- java十六进制转八进制蓝桥杯试题
- 基础练习 十六进制转八进制 (java)
- 蓝桥杯 十六进制转八进制
- 蓝桥杯--十六进制转八进制。。。
- 蓝桥杯 十六进制转八进制
- 蓝桥杯:十六进制转八进制
- 蓝桥杯 十六进制转八进制
- 蓝桥杯 十六进制转八进制
- swift中Any和AnyObject
- NC文件读写方式
- 【Maven】修改nexus默认的工作目录
- [SMOJ1710]砖块II
- Spring注入bean及设置bean值
- 蓝桥杯——十六进制转八进制(Java实现)
- POST和GET请求的汉字乱码问题
- (操作系统原理·第三章)生产者-消费者问题
- 正则表达式引擎——普适规则
- Java学习笔记--走进Java
- Ubuntu中ssh安装和修改ssh配置允许root登录
- 垃圾收集器(GC)
- 01背包问题
- GO结构体类型