Java基础知识强化106:Java中如何实现十进制到其他进制的转换
Posted 鸿钧老祖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础知识强化106:Java中如何实现十进制到其他进制的转换相关的知识,希望对你有一定的参考价值。
1、二、八、十、十六进制之间的转换
下面是示例代码,我们直接通过JDK工具库中的方法实现的,如下:
public static Integer valueOf(String s, int radix)
参数为:
String s:要解析的字符串
int radix:解析s字符串的进制
1 package com.himi.radix; 2 3 4 /** 5 * Java中如何实现十进制到其他进制的转换 6 * @author hebao 7 * 8 */ 9 public class IntegerToOther { 10 11 public static void main(String[] args) { 12 int n = 14; 13 //十进制转成十六进制: 14 String n0 = Integer.toHexString(n); 15 System.out.println("0x"+n0.toUpperCase()); 16 //十进制转成八进制 17 String n1 = Integer.toOctalString(n); 18 System.out.println(n1); 19 //十进制转成二进制 20 String n2 = Integer.toBinaryString(12); 21 System.out.println(n2); 22 23 //十六进制转成十进制 24 String n3 = Integer.valueOf("FFFF",16).toString(); 25 System.out.println(n3); 26 //十六进制转成二进制 27 String n4 = Integer.toBinaryString(Integer.valueOf("FFFF",16)); 28 System.out.println(n4); 29 //十六进制转成八进制 30 String n5 = Integer.toOctalString(Integer.valueOf("FFFF",16)); 31 System.out.println(n5); 32 33 34 //八进制转成十进制 35 String n6 = Integer.valueOf("576",8).toString(); 36 System.out.println(n6); 37 //八进制转成二进制 38 String n7 = Integer.toBinaryString(Integer.valueOf("23",8)); 39 System.out.println(n7); 40 //八进制转成十六进制 41 String n8 = Integer.toHexString(Integer.valueOf("23",8)); 42 System.out.println(n8); 43 44 45 //二进制转十进制 46 String n9 = Integer.valueOf("010110101010",2).toString(); 47 System.out.println(n9); 48 //二进制转八进制 49 String n10 = Integer.toOctalString(Integer.parseInt("010110101010", 2)); 50 System.out.println(n10); 51 //二进制转十六进制 52 String n11 = Integer.toHexString(Integer.parseInt("010110101010", 2)).toUpperCase(); 53 System.out.println("0x"+n11); 54 55 } 56 57 }
程序运行效果,如下:
2、十进制转任意进制 [2-16] 和 任意进制间转换[2-16]
1 package com.himi.code3; 2 3 import java.util.Stack; 4 5 public class TestDemo4 { 6 7 public static void main(String[] args) { 8 9 10 System.out.println("==============十进制 转化为 任意进制[2-16]=============="); 11 System.out.println(transformation(255, 16)); 12 System.out.println(transformation(254, 16)); 13 System.out.println(transformation(1010, 9)); 14 System.out.println(transformation(1010, 8)); 15 System.out.println(transformation(255, 2)); 16 17 18 System.out.println("==============任意进制间相互转换[2-16]=============="); 19 System.out.println(baseNum("678", 16, 10)); 20 System.out.println(baseNum("678", 9, 10)); 21 System.out.println(baseNum("678", 9, 2)); 22 } 23 24 /** 25 * 十进制[正整数] 转 任意进制 (2 ~ 16) 26 * 27 * @param num 28 * 输入的十进制数 29 * @param base 30 * 要转换成的进制 31 */ 32 public static String transformation(int num, int base) { 33 if (base > 16) { 34 throw new RuntimeException("进制数超出范围,base<=16"); 35 } 36 37 if (num < 0) { 38 throw new RuntimeException("输入数据不能小于0"); 39 } 40 41 StringBuffer str = new StringBuffer(""); 42 43 String digths = "0123456789ABCDEF"; 44 45 Stack<Character> s = new Stack<Character>(); 46 47 while (num != 0) { 48 s.push(digths.charAt(num % base)); 49 num /= base; 50 } 51 52 while (!s.isEmpty()) { 53 str.append(s.pop()); 54 } 55 return str.toString(); 56 } 57 58 /** 59 * 16内任意进制间转换 60 * 61 * @param num 62 * 输入的数据 63 * @param srcBase 64 * 输入数据的进制 65 * @param destBase 66 * 要转换成的进制 67 * @return 68 */ 69 70 public static String baseNum(String num, int srcBase, int destBase) { 71 72 if (Integer.valueOf(num) < 0) { 73 throw new RuntimeException("输入数据不能小于0"); 74 } 75 76 if (srcBase == destBase) { 77 return num; 78 } 79 80 String digths = "0123456789ABCDEF"; 81 char[] chars = num.toCharArray(); 82 int len = chars.length; 83 84 if (destBase != 10) {// 目标进制不是十进制 先转化为十进制 85 num = baseNum(num, srcBase, 10); 86 } else { 87 int n = 0; 88 for (int i = len - 1; i >= 0; i--) { 89 n += digths.indexOf(chars[i]) * Math.pow(srcBase, len - i - 1); 90 } 91 return n + ""; 92 } 93 return transformation(Integer.valueOf(num), destBase); 94 } 95 96 }
运行结果如下:
以上是关于Java基础知识强化106:Java中如何实现十进制到其他进制的转换的主要内容,如果未能解决你的问题,请参考以下文章