十进制转化16进制,8进制

来源:互联网 发布:淘宝街拍用什么镜头 编辑:程序博客网 时间:2024/06/06 00:41

1、

/*十进制-->十六进制。*/public static void toHex(int num){StringBuffer sb = new StringBuffer();for(int x=0; x<8; x++)     0x1111 1111 (16进制,一般二进制是有8+8+8+8共32位的,转成16进制则变成了八位的了。){int temp = num & 15;(获得最低四个二进制位的数字,转成16进制)if(temp>9)//System.out.println((char)(temp-10+'A'));sb.append((char)(temp-10+'A'));else//System.out.println(temp);sb.append(temp);num  = num >>> 4;(4个二进制位的挪,作为一个16进制,一轮一轮的改)}System.out.println(sb.reverse());}


2、

public static void toBin(int num){//定义二进制的表。char[] chs = {'0','1'};//定义一个临时存储容器。char[] arr = new char[32];//定义一个操作数组的指针int pos = arr.length;while(num!=0){int temp = num & 1;arr[--pos] = chs[temp];num = num >>> 1;}for(int x=pos; x<arr.length; x++){System.out.print(arr[x]);}}




3、

/*十进制-->二进制*/public static void toBin(int num){StringBuffer sb = new StringBuffer();while(num>0){//System.out.println(num%2);sb.append(num%2);num = num / 2;}System.out.println(sb.reverse());}}


4、/*
0 1 2 3 4 5 6 7 8 9 A  B  C   D  E  F  ==十六进制中的元素。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15


查表法:将所有的元素临时存储起来。建立对应关系。
每一次&15后的值作为索引去查建立好的表。就可以找对应的元素。
这样比 -10+'a'简单的多。

public static void toHex(int num){char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};//定义一个临时容器。char[] arr = new char[8];int pos = arr.length;while(num!=0){int temp = num & 15;//保留最低四个二进制位,通过&1111//System.out.println(chs[temp]);arr[--pos] = chs[temp];num = num >>> 4;//最低四个二进制位处理完后,二进制再右移四个二进制位,继续下一轮的数据处理}System.out.println("pos="+pos);//存储数据的arr数组遍历。for(int x=pos;x<arr.length; x++){System.out.print(arr[x]+",");}}}


5、终极进制转化,将数字num转化成任何进制base的数。设置二进制数每次右移距离为offset


public static void trans(int num,int base,int offset){if(num==0){System.out.println(0);return ;}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;}for(int x=pos; x<arr.length; x++){System.out.print(arr[x]);}return ;}}



原创粉丝点击