十六进制转八进制
2015-02-16 12:30
218 查看
package org.bluebridge.lx; /* * 十六进制转八进制 问题描述 给定n个十六进制正整数,输出它们对应的八进制数。 输入格式 输入的第一行为一个正整数n (1<=n<=10)。 接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式 输出n行,每行为输入对应的八进制正整数。 注意 输入的十六进制数不会有前导0,比如012A。 输出的八进制数也不能有前导0。 样例输入 2 39 123ABC 样例输出 71 4435274 * */ import java.util.Scanner; public class BASIC_12 { static String bin[] = { "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" }; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = Integer.parseInt(sc.nextLine()); String[] data = new String ; for (int i = 0; i < data.length; i++) data[i] = sc.nextLine(); sc.close(); for (int i = 0; i < n; i++) { tobin(data[i].toCharArray()); } } // 转成二进制 private static void tobin(char[] data) { StringBuilder two = new StringBuilder(); for (int j = 0; j < data.length; j++) { int index = (int) data[j]; index = index <= 57 ? index - 48 : index - 55; two.append(bin[index]); } // 去掉二进制前面的0 for (int j = 0; j < two.length(); j++) if (two.charAt(j) != '0') { two = two.delete(0, j); break; } tooct(two); } //转成八进制 private static void tooct(StringBuilder two) { int c0 = two.length() % 3; if (c0 == 1) two.insert(0, "00"); else if (c0 == 2) two.insert(0, "0"); int n = two.length() / 3; String temp = ""; StringBuilder octstr = new StringBuilder(); for (int j = 0; j < n; j++) { temp = two.substring(j * 3, j * 3 + 3); switch (temp) { case "000": octstr.append("0"); break; case "001": octstr.append("1"); break; case "010": octstr.append("2"); break; case "011": octstr.append("3"); break; case "100": octstr.append("4"); break; case "101": octstr.append("5"); break; case "110": octstr.append("6"); break; case "111": octstr.append("7"); break; } } System.out.println(octstr); } }
相关文章推荐
- 二进制转八进制及十六进制的方法
- 二进制、八进制、十六进制,原码,反码,补码
- 在JAVA中二进制,八进制,十六进制,十进制间进行相互转换
- [JAVA]二进制,八进制,十六进制,十进制间进行相互转换
- 进制转换,二进制,八进制,十进制,十六进制,互相转换
- [JAVA]二进制,八进制,十六进制,十进制间进行相互转换
- 进制转换算法原理(二进制 八进制 十进制 十六进制)
- 二进制、八进制、十进制、十六进制之间转换
- 软考必备1——二进制、十进制、十六进制和八进制之间的转换
- java中表示二进制、八进制、十进制、十六进制
- 转:二进制、八进制、十进制、十六进制之间转换
- [JAVA]二进制,八进制,十六进制,十进制间进行相互转换 .
- 十进制转换为二进制、八进制、十六进制
- 十六进制转化为八进制
- 2-16进制的随意转换,输入一个整数可以直接输出他的八进制或者十六进制
- 十六进制转八进制
- 十六进制转八进制
- C++输出二进制、十进制、八进制和十六进制以及左移右移运算符的总结
- 十六进制转八进制
- [JAVA]二进制,八进制,十六进制,十进制间进行相互转换