十进制转换为二进制、八进制、十六进制(JAVA)
程序员文章站
2022-07-15 10:55:04
...
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源代码,我把它抽出来做笔试面试用。
推荐阅读
-
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
-
进制转换算法原理(二进制 八进制 十进制 十六进制)
-
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
-
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
-
java 二进制、八进制、十六进制转换
-
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
-
java十进制转二进制(输入一个十进制数将其转换成二进制)
-
C++中二进制 八进制 十进制 十六进制的表示方法
-
Python 十进制转二进制、八进制、十六进制-21
-
C++ 十进制转换为十六进制 ,十进制转换为二进制,十六进制转换为十进制