黑马程序员技术交流社区

标题: 十六进制的转换 [打印本页]

作者: aspoMAN    时间: 2013-9-29 02:36
标题: 十六进制的转换
本帖最后由 aspoMAN 于 2013-9-29 17:47 编辑

前段时间做活动,实现了十进制、八进制和二进制之间的转换,但十六进制的转换一直没有实现,想请问一下不使用java的原有的转换方法,如何实现16进制的转换,16进制的A,B,C又是怎么实现的。

作者: long362144768    时间: 2013-9-29 05:48
本帖最后由 long362144768 于 2013-9-30 17:42 编辑

一般情况下,A对应十进制中的10,B对应11,....F对应15,可以做一个数组代换数组大小为16,

  1. <P>//a[0]=0;...a[10]='A';...到时用%16求得的余数用这个字符数组代换就可以了
  2. char[] a ={'0','1','2','3','4','5','6','7',
  3.            '8','9','A','B','C','D','E','F'};</P>
复制代码
例如:28%16 =1 余数 12 -->a[12]= 'C'
           1%16 =0 余数 1 -- >a[1] ='1'
          28(十进制)-->1C(十六进制)

作者: IT_JM    时间: 2013-9-29 11:07
/*
十进制-->十六进制
*/

class  ToHex
{
        public static void main(String[] args)
        {
                toHex(60);
        }

        public static void toHex(int num)
        {
                //定义一个字符串缓存,存放转换后的字母
                StringBuffer sb = new StringBuffer();

                for(int x=0; x<8; x++)
                {
                        int temp = num & 15;
                        if(temp>9)
                                sb.append((char)(temp-10+'A')); //如果大于9,转化成对应的字母
                        else
                                sb.append(temp);
                        num = num >>> 4; //无符号右移四位,取下四位对应的十六进制位

                }
               
                //得到的十六进制是反序的,需要反转一下
                System.out.println(sb.reverse());
        }
}

希望对你有所帮助
作者: aspoMAN    时间: 2013-9-29 11:49
long362144768 发表于 2013-9-29 05:48
一般情况下,A对应十进制中的10,B对应11,....F对应15,可以做一个数组代换数组大小为16, ...

嗯 明白这个思路了 我做一下

作者: aspoMAN    时间: 2013-9-29 11:51
IT_JM 发表于 2013-9-29 11:07
/*
十进制-->十六进制
*/

谢谢,我研究一下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2