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

一个简单的字符转化为16进制有关问题

2012-03-04 
一个简单的字符转化为16进制问题下面代码里,char2Hex(char)函数是否存在什么错误?#includeiostreamusing

一个简单的字符转化为16进制问题
下面代码里,char2Hex(char)函数是否存在什么错误?

#include   <iostream>
using   namespace   std;

void   char2Hex(   char   c   )   //   将字符以16进制表示
{
char   ch   =   c/0x10   +   '0 ';   if(   ch   >   '9 '   )   ch   +=   ( 'A '- '9 '-1);
char   cl   =   c%0x10   +   '0 ';   if(   cl   >   '9 '   )   cl   +=   ( 'A '- '9 '-1);
cout   < <   ch   < <   cl   < <   '   ';
}

void   main()
{
char   str[]   =   "I   love   中国 ";
cout < <strlen(str) < <endl;

for(   size_t   i=0;   i <strlen(str);   ++i   )
char2Hex(   str[i]   );
cout   < <   endl;
}

[解决办法]
此题确实有个较隐蔽的错误.
注意char类型当最高位是1(例如汉字)时,其数值是小于0的,这样c/0x10和c%0x10就得不到需要的结果了.最简单的改法是把char2Hex()的参数类型改为unsigned char:

void char2Hex( unsigned char c )
{
...
}

热点排行