读书人

c++ 将十六进制转换成汉字的办法(初学

发布时间: 2012-04-28 11:49:53 作者: rapoo

c++ 将十六进制转换成汉字的办法(初学)
在UE上打“中国人”得到十六进制是“D6D0B9FAC8CB0D0A”
我想把char str[]="D6D0B9FAC8CB0D0A"; 准换成汉字放在 char[10]={0}这个数组中,我弄了一周了,没有进展,请前辈们指点指点 谢谢

[解决办法]

C/C++ code
#include<stdio.h>#include <string.h>#include<algorithm>#include<cstdlib>using namespace std;unsigned char ch2hex(char ch)    {    static const char *hex="0123456789ABCDEF";    for(unsigned char i=0;i!=16;++i)        if(ch==hex[i])            return i;    return 0;    }char* solve(char *dest,const char *src)    {    int i=0;    int cnt=0;    unsigned char*d=(unsigned char*)dest;    while(*src)        {        if(i&1)            {            d[cnt++]|=ch2hex(*src);            }        else            {            d[cnt]=ch2hex(*src)<<4;            }        src++;        i++;        }    return dest;    }string tohex(const string& str)    {    string ret;    static const char *hex="0123456789ABCDEF";    for(int i=0;i!=str.size();++i)        {        ret.push_back(hex[(str[i]>>4)&0xf]);        ret.push_back( hex[str[i]&0xf]);        }    return ret;    }int main()    {    cout<<tohex("中国人")<<endl;    char dest[24]={0},src[]="D6D0B9FAC8CB0D0A";    puts(solve(dest,src));    system("pause");    return 0;    } 

读书人网 >C++

热点推荐