第一种方式可以定义一个容器,然后进行判断
这里要注意一下判断的条件就可以了
代码如下:
- <P>public class Demo {
- public static void toHex(int num){
- StringBuffer sb=new StringBuffer();
- for(int x=0;x<8;x++){
-
- int temp=num&15;
- //这里要注意判断条件,如果只是temp为0的话那么比如十六进制10A,打印出来就成了1A了
- if(num==0&&temp==0){
- num=num>>>4;
- continue;//满足条件的话就不执行本次循环后的语句,继续本次循环
- }
- if(temp>9)
- sb.append((char)(temp-10+'A'));
- else
- sb.append(temp);
- num=num>>>4;
- }
- System.out.println(sb.reverse());
- }
- public static void main(String[] args) {
- toHex(266);
- }
- }</P>
复制代码 还有第二种就是毕老师视屏中讲的查表法
代码如下:
- package com.fki;
- /*查表法
- * 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
- * 1.将所有的元素临时储存起来,建立对应关系每一次&15的值作为索引去查建立好的表,就可以找对应的元素。
- * 这样比-10+‘A’简单得多
- * 这个表可以通过数据的形式来定义
- *
- * 结果出来是反着的,可以通过StringBuffer reverse来完成
- * 使用数组来完成储存
- *
- */
- public class Good {
- 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){ //注意是num!=0,而不是temp,num为零说明这个数就为零了
- int temp=num&15;
- arr[--pos]=chs[temp];//先完成递减再做存储,如果是pos--则是先存储再做减减
- num=num>>>4;
- }
- System.out.println("pos="+pos);
- for(int x=pos;x<arr.length;x++){
- System.out.print(arr[x]);
- }
- }
- public static void main(String[] args) {
- toHex(60);
- }
- }
复制代码
|