问大家两个过程,困惑!

nonplus 2006-10-10 03:47:31
1:‘我’字的16进制转化的结果是‘CED2’,
2:反过来将‘CED2’怎么转换成字符‘我’,这两个过程是怎么实现的。我不知道原理,请达人们帮忙。
char buf[100]="我";
char result[100];
int pos=0;

for(int i=0;i<(int)strlen(buf);++i)
{
result[pos]=tb[((unsigned int)buf[i]&0xf0)>>4]; *
result[pos+1]=tb[(unsigned int)buf[i]&0x0f]; *
pos+=2;
}

result[pos]=0; *
printf("%s\n",result);
星号处的这3句是什么意思?
...全文
310 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hardmy 2006-10-10
  • 打赏
  • 举报
回复
CED2 在charbuf 中占用两个字节ce 和 d2;
通过上述转换提取出每个字节的高4位,低4为即 c ,e ,d ,2到result中占用四个字节。
nonplus 2006-10-10
  • 打赏
  • 举报
回复
blue_zyb 我说的不是那个意思,我是想把 CED2 转化成“我”字。
blue_zyb 2006-10-10
  • 打赏
  • 举报
回复
奇怪,直接赋值不就可以了吗。。。

for(int i=0;i<(int)strlen(buf)+1;++i)
{
result[i] = buf[i];
}
taodm 2006-10-10
  • 打赏
  • 举报
回复
using namespace std;
兄弟,如果对C++有兴趣,就找本C++ Primer来学些基本知识。
stars0913 2006-10-10
  • 打赏
  • 举报
回复
加入 using namespace std;
nonplus 2006-10-10
  • 打赏
  • 举报
回复
我加了#include <iostream> 怎么还会报这样的错?
error C2065: 'cout' : undeclared identifier
error C2297: '<<' : illegal, right operand has type 'char [3]'
taodm 2006-10-10
  • 打赏
  • 举报
回复
char p[3] = {0xCE, 0xD2};
cout << p;
"我"就是CED2,CED2就是"我"
nonplus 2006-10-10
  • 打赏
  • 举报
回复
那么反过来将‘CED2’怎么转换成字符‘我’,这个过程是怎么实现的?
taodm 2006-10-10
  • 打赏
  • 举报
回复
这是汉字的编码规则决定的。和C++本身无关。你去google汉字编码问题吧。
nonplus 2006-10-10
  • 打赏
  • 举报
回复
为什么第一步要&0xf0 后面还要>>4,第2步却要&0x0f呢?不明白
jixingzhong 2006-10-10
  • 打赏
  • 举报
回复
查表的

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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