C++汉字与十六进制相互转换

在项目中需要使用C++将汉字与十六进制互相转换,举例:
在UE上打“中国人”得到十六进制是“D6D0B9FAC8CB0D0A”,这是如何转换的,以及如何将char str[]=”D6D0B9FAC8CB0D0A”; 换成汉字放在 char[10]={0}这个数组中呢?

#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;
    }

参考文献:
https://bbs.csdn.net/topics/390027033

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325449345&siteId=291194637