本帖最后由 air 于 2013-10-18 10:24 编辑
短短20分钟的视频,几个圈把我绕晕了,发狠了,听一条边写一条,然后自己在后面一行行打注释写自己的想法给自己看,可是自学啊,不知道自己想的对还是不对,只能拜托论坛里的同学了,我这样想是对的还是错的呢?class toHex
{
public static void main(String[] args) //主函数
{
toHex_2(60); //需要转换的数值
}
/*第一种方法
public static void toHex(int num)
{
StringBuffer av =new StringBuffer();
for (int x=0;x<8;x++ )
{
int temp = num&15;
if(temp>9)
av.append((char)(temp-10+'A'));
else
av.append(temp);
num = num>>> 4;
}
System.out.println(av.reverse());
}
*/
public static void toHex_2(int num) //第二种方法
{
char[] chs ={'0','1','2','3', //首先建立一张对应的表
'4','5','6','7',
'8','9','A','B',
'C','D','E','F'};
char[] arr = new char[8];//建立一个新的数组,这个数组归属于,二进制中32位里的每4位换成1位.
int pos=arr.length; //建立一个指针,指向新建数组
while(num!=0) //在传进来的数不等于0的情况下循环
{
int temp= num & 15; //建立临时变量,这个变量就是,把传进来的数(60)与 15的结果,结果也就是arr里的其中一位
arr[--pos] = chs[temp]; //arr[先自减就是最后一位的角标],就是把上一条表达式里的temp当做一个元素写入这个arr[].
//之所以要先[--pos]的原因是,正常写的话不方便阅读,倒着写就能正着打印阅读.
num = num >>> 4; //然后把60(num)移了4个2进制位后剩余的数值继续赋给原来的60(num).才能进行下一次循环
//下一次循环,如果遍历的话,就要8次,不够灵活,所以用的while,满足条件才循环,减少循环次数.
}
for (int x=0;x<arr.length;x++)//这个for循环的目的是为了正着打印阅读,个人习惯
{
System.out.print(arr[x]); //打印最终结果
}
}
}
|