黑马程序员技术交流社区

标题: toHex什么意思 [打印本页]

作者: 疯狂的大猫    时间: 2015-4-30 11:30
标题: toHex什么意思
class ArrayTest6
{
public static void main(String[] args)
{
  toHex(60);
}
/*
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'};
  for (int x=0;x<8 ;x++ )
  {
   int temp = num & 15;
   System.out.println(chs [temp]);
   num = num >>> 15;
  }
}
}


作者: 大西洋    时间: 2015-4-30 11:30
本帖最后由 大西洋 于 2015-4-30 12:25 编辑

toHex(60);  意思是调用你自己定义的一个叫 toHex() 的方法函数~ 并且传一个参数60到这个方法内部进行运算~

就是调用下面这个方法函数~  toHex(int num)
  1. public static void toHex (int num){   
  2.       char[] chs = {'0','1','2','3'
  3.       ,'4','5','6','7'
  4.       ,'8','9','A','B'
  5.       ,'C','D','E','F'};
  6.       for (int x=0;x<8 ;x++ )
  7.       {
  8.          int temp = num & 15;
  9.          System.out.println(chs [temp]);
  10.          num = num >>> 15;
  11.      }
  12. }  
复制代码
如理解请赏分,谢谢!



作者: 依秋无泪    时间: 2015-4-30 12:34
疯狂的大猫 发表于 2015-4-30 11:30
class ArrayTest6
{
public static void main(String[] args)

首先,他是方法名,然后它的目的是把10进制转换为16进制,从见名知意的角度来看,Hex就是16进制,toHex就是转换成16进制
作者: 1017161726    时间: 2015-4-30 12:55
toHex()方法,简单说就是,把括号中的数变成十六进制表现形式。
题目中,你传的是60,那么输出的就是3c,不过,你要么打印,要么传值,你只写个toHex(60),没意义。
作者: wangxiaocong    时间: 2015-4-30 23:58
toHex ():首先它定义了一个数组,把16进制的数的表示放进去,由于是数组就可以用下标访问。然后由于int 是32位,故他判断8次(每次4位,8次32位)每4位2进制码 &15(1111)就相当于它本身,把值传给temp(自动转换为10进制),用temp作为下标查找之前的数组就可以找到对应的16进制字符。
num = num >>> 15;右移四位后循环继续。
作者: wangxiaocong    时间: 2015-5-1 00:07
应该是num = num>>>4;  移动四位  num =num>>>15 不对吧。
作者: rightyuan521    时间: 2015-5-1 18:56
大西洋 发表于 2015-4-30 12:21
toHex(60);  意思是调用你自己定义的一个叫 toHex() 的方法函数~ 并且传一个参数60到这个方法内部进行运算~ ...

toHex()方法,简单说就是,把括号中的数变成十六进制表现形式。
  1. public class ArrayTest6 {

  2.         public static void main(String[] args) {
  3.                
  4.                 toHex(60);
  5.                 //toBin(-6);
  6.         }
  7.         /*
  8.          0 1 2 3 4 5 6 7 8 9  A  B  C  D  E  F   ==十六进制中的元素。
  9.          0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  10.          
  11.          查表法:将所有的元素临时存储起来。建立对应关系。
  12.          每一次&15后的值作为索引去查建立好的表。就可以找到对应的元素。
  13.          这样比 -10+'a'简单的多。
  14.          
  15.          如何建立此表呢?
  16.          可以通过数组的形式来定义。
  17.          
  18.          发现出结果,但是是反着的。需要正过来,可以通过StringBuffer reverse功能来完成。
  19.          所以可以使用已经学过的容器:数组 来完成存储。
  20.          
  21.          */
  22.         public static void toHex(int num){
  23.                 char[] chs={'0','1','2','3',
  24.                                     '4','5','6','7',
  25.                                     '8','9','A','B',
  26.                                     'C','D','E','F',};
  27.                 //定义一个临时容器
  28.                 char[] arr=new char[8];
  29.                 int pos=arr.length;
  30.                
  31.                 while(num!=0){
  32.                         int temp=num & 15;
  33.                         //System.out.println(chs[temp]);
  34.                         arr[--pos]=chs[temp];
  35.                         num=num>>>4;
  36.                                     
  37.                 }
  38.                 //System.out.println("pos="+pos);
  39.                 //存储数组arr数组遍历。
  40.                 for(int x=pos;x<arr.length;x++){
  41.                         System.out.print(arr[x]+",");
  42.                 }
  43.         }
  44.        
  45.        
  46.         public static void toBin(int num){
  47.                 //定义二进制的表。
  48.                 char[] chs={'0','1'};
  49.                
  50.                 //定义一个临时存储容器。
  51.                 char[] arr=new char[32];
  52.                
  53.                 //定义一个操作数组的指针
  54.                 int pos =arr.length;
  55.                
  56.                 while(num!=0){
  57.                         int temp=num & 1;
  58.                         arr[--pos]=chs[temp];
  59.                         num=num>>>1;
  60.                        
  61.                 }
  62.                 for(int x=pos;x<arr.length;x++){
  63.                         System.out.print(arr[x]);
  64.                 }
  65.                
  66.         }
  67. }
复制代码

作者: luoriver    时间: 2015-5-1 21:43
将括号里面的十进制,转换成16进制。
作者: 澂澂    时间: 2015-5-1 23:32
toHex(60);就是调用toHex方法把十进制数60转换成16进制数
作者: 晓声    时间: 2015-5-4 21:11
toHex();括号内的十进制转换成十六进制。
作者: 疯狂的大猫    时间: 2015-5-5 07:39
谢谢你们
作者: 紫影    时间: 2015-5-5 09:47
就是调用toHex()方法将60转换为十六进制
作者: 疯狂的大猫    时间: 2015-5-5 17:10
嗯呢,谢谢热心的兄弟姐妹们
作者: 唐泉银    时间: 2015-5-6 15:35
其实这就是自定义的方法名,表示将十进制数据转换成16进制的数,如果自己不写这个方法的方法体,这个方法时没用的
作者: 过路人    时间: 2015-5-7 19:43
将十进制60转换成16进制 3c
作者: davane    时间: 2015-5-8 20:03
toHex()方法,简单说就是,把括号中的数变成十六进制表现形式。
作者: 赵旗    时间: 2015-5-9 01:11
自己定义的一个方法  功能是通过查表法来完成16进制的转换
作者: yuqilin    时间: 2015-5-9 17:43
将其转为16进制
作者: 齐弦    时间: 2015-5-9 19:46
转换为16进制!
作者: lingdu    时间: 2015-5-10 18:00
就是转成16进制的意思呗
作者: 只想好好的    时间: 2015-5-11 10:20
本帖最后由 只想好好的 于 2015-5-11 10:22 编辑

就是将一个十进制整数转换为十六进制
public class TestPrint{
        public static void main(String[] args) {
                int  num = 60; //定义要转换的整数
                //将之转换为16进制 ,直接调用Interger里面的toHexString(int i)静态方法
                // 如果不理解 可以查看api文档
                String str = Integer.toHexString(num);
                System.out.println(str);
                //如果要知道用代码实现可以,看下面toHex()方法
                toHex(num);
        }
        public static void toHex(int num){
                int num1 = 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 = 0;
                while(num != 0){
                        int temp = num & 15;
                        arr[pos++] = chs[temp];
                        num = num >>> 4;
                }
                System.out.print("十进制:" + num1 + " 转换十六进制为:" );
                for(int i = pos - 1; i >= 0; i--){
                        System.out.print(arr);
                }
                System.out.println();
        }
        
}
输出:
3c
十进制:60 转换十六进制为:3C


作者: kolen.j    时间: 2015-5-12 00:09
进行16进制转换
作者: zhuankill    时间: 2015-5-12 23:21
就是自己定义的一个方法名




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