汉字转换十六进制代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
void char2HexError( char c ) // 将字符以16进制表示
//该函数在转换汉字的时候会出现错误!
{
char ch = c/16 + '0';
if( ch > '9' ) ch += ('A'-'9'-1);
char cl = c%16 + '0';
if( cl > '9' ) cl += ('A'-'9'-1);
printf("%c%c", ch ,cl );
}
void char2Hex(char c) // 将字符以16进制表示
{
char ch, cl;
ch = ((c & 0xF0) >> 4) + '0';
/*c & oxF0 把c的低4位变成0,然后右移4位,得到只有高位的4位二进制数。
4位的二进制数转换为一个16进制的数,由于这里是char类型,要用16进制数打印出来,,
需要加上0的ASCII码才可以,不然只能打印10进制的ASCII码对应的字符*/
if(ch > '9') ch += ('A'-'9'-1);
cl = (c & 0x0F) + '0';
if(cl > '9') cl += ('A'-'9'-1);
printf("%c%c", ch ,cl );
}
int main(void)
{
int i;
char str[] = "啊 ";
for(i=0; i
一个汉字用16进制打印出来是4个16进制数。
“中”在计算机中表示为1101 0110 1101 0000;这是个有符号数,
所以str[7] = -42 (1101 0110) 和str[8](1101 0000),
如果用普通数制转换就会出现错误;*/
char2Hex( str[i] );
printf("\n");
return 0;
}