Java 十进制 转 二进制、八进制、十六进制

来源:互联网 发布:保税货物需要上传数据 编辑:程序博客网 时间:2024/05/19 02:26

JDK中已经帮我们实现了十进制 转 二进制、八进制、十六进制的功能,使用Integer.toBinaryString(x)、Integer.toOctalString(x)、Integer.toHexString(x) 即可将x转换为对应的二进制、八进制、十六进制形式。我们也可以通过位移运算来实现求二进制、八进制、十六进制的功能。


示例代码

@Testpublic void test02(){//使用JDK实现int x = -99;System.out.println(x+"="+Integer.toBinaryString(x));System.out.println(x+"="+Integer.toOctalString(x));System.out.println(x+"="+Integer.toHexString(x));}@Testpublic void test01(){int x = -99;System.out.println(x+"="+toBin(x));System.out.println(x+"="+toBa(x));System.out.println(x+"="+toHex(x));}/* * 十进制-->二进制 */public String toBin(int num) {return trans(num, 1, 1);}/* * 十进制-->八进制 */public String toBa(int num) {return trans(num, 7, 3);}/* * 十进制-->十六进制 */public String toHex(int num) {return trans(num, 15, 4);}public String trans(int num, int base, int offset) {if (num == 0) {return null;}char[] chs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A','B', 'C', 'D', 'E', 'F' };char[] arr = new char[32];int pos = arr.length;while (num != 0) {int temp = num & base;arr[--pos] = chs[temp];num = num >>> offset;}StringBuilder sb = new StringBuilder();for (int x = pos; x < arr.length; x++) {sb.append(arr[x]);}return sb.toString();}


最近在做项目时需要将一个byte数组 按6bit一组进行重新组合,研究了一下实现了这个功能

实现代码

@org.junit.Testpublic void test02(){byte b = 65;//byte b = -86;String str = getAllBinaryBits(b);System.out.println(str);}/** * 将每一个字节转换为8位二进制字符串形式 * @param b * @return */private String getAllBinaryBits(byte b) {StringBuffer sb = new StringBuffer();sb.append((b & 128)==0?0:(b & 128)>>7);sb.append((b & 64)==0?0:(b & 64)>>6);sb.append((b & 32)==0?0:(b & 32)>>5);sb.append((b & 16)==0?0:(b & 16)>>4);sb.append((b & 8)==0?0:(b & 8)>>3);sb.append((b & 4)==0?0:(b & 4)>>2);sb.append((b & 2)==0?0:(b & 2)>>1);sb.append(b & 1);//System.out.println(sb.toString());return sb.toString();}


要转换byte数组,套上一个for循环即可