黑马程序员技术交流社区
标题:
十进制转十六进制,问题在哪?
[打印本页]
作者:
高鑫
时间:
2012-4-28 11:20
标题:
十进制转十六进制,问题在哪?
class Demo
{ public static void main(String[] args)
{ toHex(60);
}
public static void toHex(int num)
{
char [] chn={'1','2','3','4',
'5','6','7','8',
'9','A','B','C',
'D','E','F'};
char [] arr=new char[8];
int pos=8;
while(num!=0)
{ int temp=num&15;
arr[--pos]=chn[temp];
num =num>>>4;
}
for(int x=pos;x<arr.length;x++)
{
System.out.print(arr[x]);
}
}
}
复制代码
输入60,结果却是4D,错在哪了啊??死活找不到
作者:
李震 李震 李震
时间:
2012-4-28 12:19
本帖最后由 黑马我来了 于 2012-4-28 12:21 编辑
呵呵 char [] chn={'1','2','3','4',
'5','6','7','8',
'9','A','B','C',
'D','E','F'}; 少个0,计算机里面,是从0开始的额!
作者:
奥特曼爱小怪兽
时间:
2012-4-28 12:31
while(num!=0)
14. { int temp=num&15;
15. arr[--pos]=chn[temp-1]; //下标你没有控制
16. num =num>>>4;
17. }
作者:
胡奎
时间:
2012-4-28 13:04
char[]数组定义少了一个0,
作者:
马浩
时间:
2012-4-28 13:54
class Demo
{ public static void main(String[] args)
{ toHex(60);
}
public static void toHex(int num)
{
char [] chn={'1','2','3','4',
'5','6','7','8',
'9','A','B','C',
'D','E','F'};//
十六进制满16进1,很明显这里少了一个,应该是0~15才对,所以数组中第一个元素应该是0
char [] arr=new char[8];
int pos=8;
while(num!=0)
{ int temp=num&15;
arr[--pos]=chn[temp];
num =num>>>4;
}
for(int x=pos;x<arr.length;x++)
{
System.out.print(arr[x]);
}
}
}
作者:
杨威
时间:
2012-4-28 14:11
class Demo
{ public static void main(String[] args)
{ toHex(60);
}
public static void toHex(int num)
{
char [] chn={'1','2','3','4',
'5','6','7','8',
'9','A','B','C',
'D','E','F'};
/*这里的表中少定义了一个为0的数符,每个进制都是有0这个数码的。
而60的二进制为0000 0000 0000 0000 0000 0000 0011 1100,
*/
char [] arr=new char[8];
int pos=8;
while(num!=0)
{ int temp=num&15;//第一次得到1100,即12,查表得D(数组下标从0开始),第二次得到0011,即3,查表得4,故结果输出4D
arr[--pos]=chn[temp];
num =num>>>4;
}
for(int x=pos;x<arr.length;x++)
{
System.out.print(arr[x]);
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2