用习惯了Integer.toHexString(i)方法,对于进制之间的互转有点模糊了,今天遇到一个问题:十进制转十二进制。
开始用了一个很傻的办法,因为只需要求1000-10000之间的数字转换,我就用递增+map的方法实现了,虽然问题是解决了,但是感觉不是个办法。
想起大一老师讲过的10进制转2进制的办法,觉得可以如法炮制。
把10转成2进制表示:
10/2=5; 10%2 = 0;
5/2 = 2; 5 %2 = 1;
2/2 = 1; 2%2=0;
1/2=0;1%2=1;
把余数反过来就是二进制的表示1010
那么任意进制的转换就可以通过10进制作为过度来计算。比如6进制转11进制。
6进制的1234转成11进制:
1.6进制转10进制。
1*6^3+2*6^2+3*6^1+4 = 216+72+18+4=310;
2.把10进制转为11进制:
310/11 = 28; 310%11=2;
28/11=2;28%11=6;
2/11=0;2%11=2;
所以6进制的1234表示为11进制:262