本帖最后由 haozi050 于 2014-2-4 20:52 编辑
- package day01;
- /*需求:完成用户指定的十进制数转成16进制数.(版本2)
- * 思路:1,用户指定的十进制数未知,需要定义变量。
- * 2,要想转成十六进制,可以获取16进制的每一位,然后合并。怎么获取每一位?通过每次与15然后右移4位就可以得到每一位。
- * 3,将得到的每一位存储到数组中,存储过程中判断num是否为0,为0则不再存储。用变量记录住存储的角标位置,然后反向遍历,
- * 并存储到字符串变量中,或者逆向存储到属猪中然后存储到字符串中。
- * */
- public class HexTainslate2 {
- public static void main(String[] args)
- {
- // 1,定义变量接受用户指定的十进制数。
- int num=96;
- // 2,调用转换方法得到十六进制字符串
- String str=trainslate(num);
- System.out.println(num+"的十六进制是"+str);
- }
- private static String trainslate(int num)
- {
- if(num==0)
- return "0";
- //定义数组用于存储获取的每一位。由于int只有32位,每4位一获取,所以最多只有8个字符
- char [] ch=new char[8];
- //定义变量记录最后一次存储在数组中的位置。
- int index=0;
- //2,将该数&15获取每一位
- while(num!=0)
- {
- int temp=num&15;
- //判断是否大于10,是则需要转换
- /*if(temp>10)
- ch[index]=(char)(temp-10+'a');
- else
- ch[index]=(char)(temp-0+'0');*/
- ch[index]=temp>10?(char)(temp-10+'a'):(char)(temp-0+'0');
- //3,将该十进制数右移4位。
- num=num>>>4;
- index++;
- }
-
- // 将数组中字符转成字符串
-
- return toString(ch,index);
- }
- private static String toString(char[] ch,int index)
- {
- String s="[";
- for (int i = index-1; i >=0; i--)
- {
- if(index!=0)
- s=s+ch[i]+",";
- else
- s=s+ch[i]+"]";
- }
- return s;
-
- }
- }
复制代码
结果是:96的十六进制是[6,0,
|