十六进制转二进制(转)
2018-03-21 12:29
148 查看
/* * 问题描述 给定n个十六进制正整数,输出它们对应的八进制数。 输入格式 输入的第一行为一个正整数n (1<=n<=10)。 接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式 输出n行,每行为输入对应的八进制正整数。 注意 输入的十六进制数不会有前导0,比如012A。 输出的八进制数也不能有前导0。 样例输入 2 39 123ABC 样例输出 71 4435274 提示 先将十六进制数转换成某进制数,再由某进制数转换成八进制。 * */ /* * >>> 运算符把 expression1 的各个位向右移 expression2 指定的位数。右移后左边空出的位用零来填充。移出右边的位被丢弃。例如: var temp temp = -14 >>> 2变量 temp 的值为 -14 (即二进制的 11111111 11111111 11111111 11110010),向右移两位后等于 107 * */ import java.util.HashMap; import java.util.Scanner; public class castInteger { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); String a[] = new String ; String b[] = new String ; for (int i = 0; i < a.length; i++) { a[i] = in.next(); b[i] = ""; } for (int i = 0; i < a.length; i++) { b[i] = hexToOctal(a[i]);// 把a数组中的数转成八进制 System.out.println(b[i]); } } // 十六进制转八进制 public static String hexToOctal(String str) { String s = hexToBinary(str);// 16->2 String s1 = binaryHandle(s);// 二进制处理器 return binaryToOctal(s1);// 2->8 } // 十六进制转成二进制 public static String hexToBinary(String hexNum) { char[] chs = { '0', '1' }; String str = new String("0123456789ABCDEF"); char[] charArray = hexNum.toUpperCase().toCharArray();// toCharArray():将字符串对象中的字符转大写字母转换为一个字符数组 int pos = charArray.length * 4; char[] binaryArray = new char[pos]; for (int i = charArray.length - 1; i >= 0; i--) { int temp = str.indexOf(charArray[i]); for (int j = 0; j < 4; j++) { binaryArray[--pos] = chs[temp & 1]; temp = temp >>> 1; } } return new String(binaryArray); } // 处理二进制字符串 public static String binaryHandle(String binary) { String str = binary.substring(binary.indexOf('1')); int len = str.length(); if (len % 3 == 0) return str; else if (len % 3 == 1) return "00" + str; else return "0" + str; } // 二进制转成八进制 public static String binaryToOctal(String binary) { HashMap<String, Character> map = new HashMap<String, Character>(); map.put("000", '0'); map.put("001", '1'); map.put("010", '2'); map.put("011", '3'); map.put("100", '4'); map.put("101", '5'); map.put("110", '6'); map.put("111", '7'); int pos = binary.length() / 3; char[] octArray = new char[pos]; for (int i = binary.length(); i > 0; i -= 3) { String s = binary.substring(i - 3, i); octArray[--pos] = map.get(s); } return new String(octArray); } }
相关文章推荐
- java二进制、八进制、十六进制间转换详细
- 【Python】Python实现进制转换(二进制、十进制和十六进制)及注意事项
- java二进制,字节数组,字符,十六进制,BCD编码转换
- 十进制八进制十六进制还有二进制
- python二进制,八进制,十六进制
- C语言中字符串如何转换为二进制、八进制、十进制、十六进制
- 二进制、八进制、十进制、十六进制之间转换
- C# 二进制,十进制,十六进制 互转
- 经典的二进制、八进制、十六进制教程
- Oracle中的二进制、八进制、十进制、十六进制相互转换函数
- IOS中常用的字符串、十进制、二进制、十六进制之间互相转换及简单算术和
- 整理C# 二进制,十进制,十六进制 互转
- C# 二进制,十进制,十六进制 互转
- 二进制,八进制,十六进制,十进制间进行相互转换
- java 进制转换,二进制 十进制 十六进制 正数 负数的进制等等!
- [JAVA]二进制,八进制,十六进制,十进制间进行相互转换
- 二进制、八进制、十六进制
- 以十六进制展示二进制文件
- Java中二进制、十进制、十六进制及ASCII码与String及字节数组与十六进制之间的转换
- java中进行二进制,八进制,十六进制,十进制间进行相互转换