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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 朱志江 于 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);
        }
}

2 个回复

倒序浏览
本帖最后由 孙金鑫 于 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 00:14

我现在学的就是查表法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马