黑马程序员技术交流社区

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

作者: 郭冰川    时间: 2013-1-4 20:42
标题: 二进制转换成十六进制
本帖最后由 郭冰川 于 2013-1-4 22:25 编辑

下面是毕老师讲的例子,将二进制中的每四位提取出来用十六进制表示,例子中只提了两个十六进制的值,能不能用一个循环让二进制数继续右移直到全部提取出来,求高手解答.
class OperateDemo
                {
                        static int num = 700;
                        public static void main(String[] args)
                        {
                                
                                int n1 = num & 15;
                                if (n1>9)
                                        System.out.println((char)(n1-10+'A'));
                                else
                                        System.out.println(n1);
                                int temp = num >>> 4;
                                int n2 = temp & 15;
                                if (n2>9)
                                        System.out.println((char)(n2-10+'A'));
                                else
                                        System.out.println(n2);

                        }
                }

作者: 李培根    时间: 2013-1-4 21:01
可以定义循环,当num不等于0的时候就继续。
作者: 蔡少凯    时间: 2013-1-4 22:03
这是我对上面代码改写了一下 在java中 int类型为4个字节32位 而每4位表示一个十六进制的话 只需移动8次 可以在使用for循环 在执行语句中进行判断左移4位之后是否为0  为0就跳出循环
以下是我写的代码 其实毕老师在后面有讲到过更简便的方法
public class Demo1 {
            static int num = 700;
            public static void main(String[] args)
            {
                    
                    for(int i = 0;i<8;i++){
                            int n = num & 15;
                            if(n == 0)
                                    break;
                            else{
                                    if(n>9)
                                             System.out.println((char)(n-10+'A'));
                                    else
                                             System.out.println(n);
                            }
                            num = num >>> 4;
                    }
                    
    }
}
作者: 郭冰川    时间: 2013-1-4 22:23
蔡少凯 发表于 2013-1-4 22:03
这是我对上面代码改写了一下 在java中 int类型为4个字节32位 而每4位表示一个十六进制的话 只需移动8次 可 ...

ok了,多谢
作者: 郭冰川    时间: 2013-1-4 22:24
李培根 发表于 2013-1-4 21:01
可以定义循环,当num不等于0的时候就继续。

谢啦,新版主




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