首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

急大哥大姐,帮帮忙,十六进制转换的有关问题,小弟我转换显示结果不对

2012-02-14 
急急,大哥大姐,帮帮忙,十六进制转换的问题,我转换显示结果不对.//2.cpp:Definestheentrypointfortheconsol

急急,大哥大姐,帮帮忙,十六进制转换的问题,我转换显示结果不对.
//   2.cpp   :   Defines   the   entry   point   for   the   console   application.
//

#include   "stdafx.h "
void   hctoa(unsigned   char   ch,   unsigned   char*   hex)  
{  
unsigned   char   i,c;  

for(i=0;i <2;i++)  
{  
if(i==0)   c   =   ch> > 4;  
else   c   =   ch;  
c   &=   0x0f;  
if(   c> =0   &&   c <=9   )   *(hex+i)   =   '0 '   +   c;  
else   *(hex+i)   =   'A '   +   c   -   10;  
}  
}  

int   main(int   argc,   char*   argv[])
{
unsigned   char   crsp[2];
unsigned   char   str=22;
unsigned   char   i;

hctoa(str,crsp);

for(i=0;i <2;i++)
{
printf( "%c ",crsp[i]);
}

printf( "Hello   World!\n ");
return   0;
}

为什么运行结果是16Hello   World!,为什么不是22


[解决办法]
帮你顶上吧,今天我没心情学习了
[解决办法]
if( c >=0 && c <=9 ) *(hex+i) = "0 " + c;
else *(hex+i) = "A " + c - 10;
这两处错误,是你贴代码的时候手误吧?应该是单引号。
22用16进制,可不就应该是16吗?

[解决办法]
一样的。只是在某些书上说,两种写法,编译之后的代码会有效率上的差别,不过,似乎现在的编译器都已经足够智能,两者不会有明显的效率差异,所以,可以认为是完全一样的。
[解决办法]
因为算出来就是这个啊

热点排行