public class ToBin { public static void main(String[] args) { System.out.println("16的二进制为:" + toBin(16)); System.out.println("16的十六进制为:" + toHex(16)); System.out.println(toHex(255, 2, 1)); System.out.println(toHex(255, 16, 4)); System.out.println(toHex(255, 8, 3)); } public static String toBin(int a) { StringBuilder sb = new StringBuilder(); char[] chs = { '0', '1' }; while (a != 0) { int b = a & 1;// 得到一个二进制位 sb.append(chs[b]); a = a >>> 1;// 下一个二进制位 } return sb.reverse().toString(); } public static String toHex(int a) { StringBuilder sb = new StringBuilder(); char[] chs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; while (a != 0) { int b = a & 15; // 取最低4位 sb.append(chs[b]);// b-10+'A' a = a >>> 4; // 下一个4位 } return sb.reverse().toString(); } public static String toHex(int a, int hex, int off) { if (a == 0) return "0"; int base = -1; if (hex == 2) base = 1; else if (hex == 16) base = 15;// 1111 else if (hex == 8) base = 7;// 111 StringBuilder sb = new StringBuilder(); char[] chs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; while (a != 0) { int b = a & base; //取最低位 sb.append(chs[b]); a = a >>> off; } return sb.reverse().toString(); } }