黑马程序员技术交流社区

标题: 输入人的名字然后直接输出名字相对应的十六进制 [打印本页]

作者: 朱志江    时间: 2013-5-5 23:37
标题: 输入人的名字然后直接输出名字相对应的十六进制
本帖最后由 朱志江 于 2013-5-6 20:19 编辑

/*
需求:输入人的名字然后输出时人的名字行对应的十六进制数

思想:1、把人的名字用char类型的转换成int类型的
          2、然后用查表法把int类型的转换成十六进制
          3、用数组的方式记录这些十六进制数然后打印出来

步骤:1、新建一个类中定义一个静态的方法,然后把要用到的字符用char类型数组的方式记录
          2、定义指针,指针指向是最大的角标
          3、用while循环来吧int的数转换成十六进制
          4、用for循环进行记录和输出
*/
class Mingming
{
        public static void main(String[] args)
        {        
                Mingming1 mm = new Mingming1();//new一个对象
                mm.ming(""+'\u6731'+'\u5FD7'+'\u6C5F'+"\n");//调用类中的函数
                mm.haha('朱');
                mm.haha('志');
                mm.haha('江');
        }
}


class Mingming1
{
        public static void haha(char c)
        {
                char ch = c;
                int num = ch;
                char [] cc = {'0','1','2','3',//把查表法用到的字符全都用数组的方式表现出来
                                         '4','5','6','7',
                                         '8','9','A','B',
                                         'C','D','E','F'};
                char [] arr = new char[32];

                int pos = arr.length-1;//把指针指向最大的角标
                while (num !=0)
                {
                        int temp = num & 15;//转换十六进制
                        arr[pos]=cc[temp];
                        num =num >>> 4;
                        pos--;
                }
                for (int  x =pos+1;x<arr.length ;x++ )//用for记录转换的数
                {
                        System.out.print(arr[x]);
                }
                System.out.println();
        }

        public static void ming(Object x)
        {
                System.out.print(x);
        }
}

作者: 孙金鑫    时间: 2013-5-6 00:14
本帖最后由 孙金鑫 于 2013-5-6 00:17 编辑
  1. /*
  2. 首先,一个汉字在GBK中用两个字节来表示的,utf-8中用3个字节来表示的,跟字符没什么关系好不好?

  3. 楼主,我不知道你为什么要用字符表示。。。下面是我用字节来做的,估计跟GBK里面差不多吧

  4. 还有我看了下你的代码,完全用不着静态,用了之后,静态在内存中生命周期长,于开发不利

  5. 下面是我的代码。

  6. */

  7. class Mingming
  8. {
  9.         public static void main(String[] args)
  10.         {     
  11.                         
  12.                                 show("朱".getBytes());
  13.                                 show("志".getBytes());
  14.                                 show("江".getBytes());

  15.                         
  16.         }
  17.                 public static void show(byte[] arr)
  18.                 {
  19.                         int num1 = (int)arr[0];
  20.                         System.out.print(Integer.toHexString(num1)+"   ");

  21.                         int num2 = (int)arr[1];
  22.                         System.out.println(Integer.toHexString(num2));
  23.                         
  24.                 }
  25. }
复制代码

作者: 朱志江    时间: 2013-5-6 20:18
孙金鑫 发表于 2013-5-6 00:14

我现在学的就是查表法




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