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

tinzo 2012-04-27 07:30:58
在UE上打“中国人”得到十六进制是“D6D0B9FAC8CB0D0A”
我想把char str[]="D6D0B9FAC8CB0D0A"; 准换成汉字放在 char[10]={0}这个数组中,我弄了一周了,没有进展,请前辈们指点指点 谢谢
...全文
1460 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rg9311701 2012-04-30
  • 打赏
  • 举报
回复
#include <iostream>
#include <string>
using namespace std;

#define N 100
int char2num(char ch);
int main()
{
int i,j,n,len;
char st[]="D6D0B9FAC8CB0D0A";//内容是“中国人”三个字。
char st2[N];

memset(st2,'\0',N);
len=strlen(st);
j=0;
for (i=0;i<len;i+=2)
{
n=char2num(st[i])*16+char2num(st[i+1]);
st2[j++]=n;
}
cout << st2 << endl;
return 0;
}


int char2num(char ch) /*将字符转成数字*/
{
if (ch>='a')
return ch-'a'+ 10;
else if (ch>='A')
return ch-'A'+ 10;
else
return ch-'0';
}
evencoming 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

谢谢 2楼
[/Quote]
结贴吧..
马上升星了.
tinzo 2012-04-27
  • 打赏
  • 举报
回复
谢谢 2楼
evencoming 2012-04-27
  • 打赏
  • 举报
回复
[code=C/C++]
#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;
}
[/CODE]

33,322

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧