日期:2014-05-20 浏览次数:20616 次
public class itoa_test { /** * @param args */ public static String itoa(int input,int base) { String output=""; int c=0; int lowbit=0; base >>= 1; do { lowbit = input & 1; input = (input >> 1) & 0xffffffff; c = ((input % base) << 1) + lowbit; if(c < 10) c += '0'; else c +='A'; output+=(char)c; } while((input/=base)!=0); StringBuffer sb=new StringBuffer(output); output= sb.reverse().toString(); return output; } public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(itoa(100,16)); } }
------解决方案--------------------
public class TestConvertion { public static void main(String[] args) { System.out.println("\n---正数------"); for (int i = 2; i <= 36; i++) {// 测试100的 2进制 3进制 .....36进制 System.out.printf(" %2d进制:%7s", i,convert(100, i)); if (i % 6 == 1) System.out.println(); } System.out.println("\n---负数------"); for (int i = 2; i <= 36; i++) {// 测试-100的 2进制 3进制 .....36进制 System.out.printf(" %2d进制:%7s", i,convert(-100, i)); if (i % 6 == 1) System.out.println(); } } /** * @param decimal:要转换的数 * @param base:找转换的进制 * @return:转换成功后的数据 */ static String convert(int decimal, int base) { if (base < 2 || base > 36) throw new UnsupportedOperationException("输入错误"); // 十进制的数 允许转化成2进制 3进制 .....36进制, // 并且以字符串形式返回 char[] a = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray(); int dividend = decimal < 0 ? -decimal : decimal;// 被除数,有可能是负数 int divider = base; // 除数 int quotient = 0;// 商 int remainder = 0; String result = ""; while ((quotient = dividend / divider) != 0) { remainder = dividend % divider; // System.out.println(dividend + " " + divider + " " + quotient + " // " + remainder); result = a[remainder] + result; dividend = quotient;// 重新初始化,更新被除数 } remainder = dividend % divider; result = a[remainder] + result; if (decimal < 0) return '-' + result;// 如果是负数 return result; } } /* ---正数------ 2进制:1100100 3进制: 10201 4进制: 1210 5进制: 400 6进制: 244 7进制: 202 8进制: 144 9进制: 121 10进制: 100 11进制: 91 12进制: 84 13进制: 79 14进制: 72 15进制: 6A 16进制: 64 17进制: 5F 18进制: 5A 19进制: 55 20进制: 50 21进制: 4G 22进制: 4C 23进制: 48 24进制: 44 25进制: 40 26进制: 3M 27进制: 3J 28进制: 3G 29进制: 3D 30进制: 3A 31进制: 37 32进制: 34 33进制: 31 34进制: 2W 35进制: 2U 36进制: 2S ---负数------ 2进制:-1100100 3进制: -10201 4进制: -1210 5进制: -400 6进制: -244 7进制: -202 8进制: -144 9进制: -121 10进制: -100 11进制: -91 12进制: -84 13进制: -79 14进制: -72 15进制: -6A 16进制: -64 17进制: -5F 18进制: -5A 19进制: -55 20进制: -50 21进制: -4G 22进制: -4C 23进制: -48 24进制: -44 25进制: -40 26进制: -3M 27进制: -3J 28进制: -3G 29进制: -3D 30进制: -3A 31进制: -37 32进制: -34 33进制: -31 34进制: -2W 35进制: -2U 36进制: -2S */