急急,大哥大姐,帮帮忙,十六进制转换的问题,我转换显示结果不对.
// 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吗?
[解决办法]
一样的。只是在某些书上说,两种写法,编译之后的代码会有效率上的差别,不过,似乎现在的编译器都已经足够智能,两者不会有明显的效率差异,所以,可以认为是完全一样的。
[解决办法]
因为算出来就是这个啊