java 十进制转二进制 八进制,十进制转换为二进制、八进制、十六进制(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', '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源代码,我把它抽出来做笔试面试用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值