十进制转换为二进制、八进制、十六进制(JAVA)

简介: public class Test { final static char[] digits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', '...
public class Test {

	final static char[] digits = { '0', '1', '2', '3', '4', '5', '6', '7', '8',
			'9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
			'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
			'z' };

	public static void main(String[] args) {
		System.out.println(Test.toBinaryString(15));
		System.out.println(Test.toHexString(15));
		System.out.println(Test.toOctalString(15));
	}

	public static String toBinaryString(int i) {
		return toUnsignedString(i, 1);
	}

	public static String toHexString(int i) {
		return toUnsignedString(i, 4);
	}

	public static String toOctalString(int i) {
		return toUnsignedString(i, 3);
	}

	private static String toUnsignedString(int i, int shift) {
		char[] buf = new char[32];    //int转成二进制最多32位,转成其它进制则更少了
		int charPos = 32;     //记录数组下标
		int radix = 1 << shift;   //基数
		int mask = radix - 1;   //掩码,如16进制相当于4位2进制
		do {
			buf[--charPos] = digits[i & mask];   //用掩码逐次转成其它进制
			i >>>= shift;
		} while (i != 0);

		return new String(buf, charPos, (32 - charPos)); //转成字符串
	}
}

   输出结果:

  1111
   f
  17

 

PS:其实是JDK里面的Integer源代码,我把它抽出来做笔试面试用。

目录
相关文章
|
8月前
|
Java
Java中整数(负数)的二进制表示
Java中整数(负数)的二进制表示
|
5月前
|
存储 Oracle Java
01 Java概述基础与计算机基础(DOS+进制+原码反码补码)
01 Java概述基础与计算机基础(DOS+进制+原码反码补码)
52 17
|
6月前
|
Java Apache Maven
Java:commons-codec实现byte数组和16进制字符串转换
在上述代码中,`Hex.encodeHexString(bytes)`用于将byte数组转换为16进制字符串,`Hex.decodeHex(hexString)`用于将16进制字符串转换为byte数组。
120 0
|
6月前
|
Java Apache Maven
Java:commons-codec实现byte数组和16进制字符串转换
在上述代码中,`Hex.encodeHexString(bytes)`用于将byte数组转换为16进制字符串,`Hex.decodeHex(hexString)`用于将16进制字符串转换为byte数组。
136 0
|
7月前
|
算法 Java Go
【经典算法】LeetCode 67. 二进制求和(Java/C/Python3/Golang实现含注释说明,Easy)
【经典算法】LeetCode 67. 二进制求和(Java/C/Python3/Golang实现含注释说明,Easy)
97 2
|
7月前
|
算法 Java
Java将16进制的字符串转换为10进制数的方法
【6月更文挑战第27天】Java将16进制的字符串转换为10进制数的方法
1941 0
|
7月前
|
Java
剑指offer_3_前n个数字二进制形式中1的个数(java)
剑指offer_3_前n个数字二进制形式中1的个数(java)
|
7月前
|
Java
剑指offer_2_二进制加法(java)
剑指offer_2_二进制加法(java)
|
7月前
|
Java
java实现字符串与十六进制字符串互转
java实现字符串与十六进制字符串互转
|
8月前
|
传感器 数据采集 网络协议
Java串口通信:从十六进制字符串到字节数组的正确转换与发送
Java串口通信:从十六进制字符串到字节数组的正确转换与发送
341 4