A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© aspoMAN 中级黑马   /  2013-9-29 02:36  /  1639 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 aspoMAN 于 2013-9-29 17:47 编辑

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

4 个回复

倒序浏览
本帖最后由 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(十六进制)
回复 使用道具 举报
/*
十进制-->十六进制
*/

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());
        }
}

希望对你有所帮助

评分

参与人数 1技术分 +1 收起 理由
黄文伯 + 1 赞一个!

查看全部评分

回复 使用道具 举报
long362144768 发表于 2013-9-29 05:48
一般情况下,A对应十进制中的10,B对应11,....F对应15,可以做一个数组代换数组大小为16, ...

嗯 明白这个思路了 我做一下
回复 使用道具 举报
IT_JM 发表于 2013-9-29 11:07
/*
十进制-->十六进制
*/

谢谢,我研究一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马