不知道怎么实现这个转换,请各位大虾指点。

nonplus 2006-09-29 04:46:26
我想把“我爱编程”这四个字变成16进制数,并且以16进制数方式存在一个变量里。
比如:buf1[100]="我爱编程" 转换成 一个变量="5046808279327752" 在线等,谢谢。
...全文
382 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2006-09-30
  • 打赏
  • 举报
回复
你有这么多时间泡在网上,足够找出电子版,下载,看完了。^o^
nonplus 2006-09-30
  • 打赏
  • 举报
回复
您教育的是,可是现在手头上没书,第一个错误是'ostringstream' : undeclared identifier
taodm 2006-09-30
  • 打赏
  • 举报
回复
C++Primer P871。
学C++不能用烂书。
nonplus 2006-09-30
  • 打赏
  • 举报
回复
我编译过了,但是不知道用什么头文件呀,提示9个错误
taodm 2006-09-30
  • 打赏
  • 举报
回复
你也不说你觉得难在何处,光傻等别人的代码,等到了也看不懂,提高就太慢啦。
我的代码你编译过了没有?
nonplus 2006-09-30
  • 打赏
  • 举报
回复
不是呀,我是想把汉字转换成16进制的字符串。比如buf1[100]="我爱编程" 转换成 一个变量="5046808279327752" 在线等,谢谢。 怎么实现? 谢谢大家。
weijiangshanwww 2006-09-30
  • 打赏
  • 举报
回复
动态申请内存啊。长度可变,就不要用数组了
漂流的代码 2006-09-30
  • 打赏
  • 举报
回复
//我想楼主应该是将字符串的值转为16进制显示
//ASCII字符转成16进制,
//声明,必须是ascii字符

static char strHexMarks[]="0123456789ABCDEF";
#define CHAR2HEX(c,str) do{ \
*(str) = strHexMarks[((unsigned char)c)>>4]; \
*((str)+1) = strHexMarks[((unsigned char)c)&0xF]; \
}while(0);

int str2Hex(const char* strIn,char* strOut)
{
int len = 0;
if(!strIn || !strOut) return NULL;
while(*strIn) {
CHAR2HEX(*strIn,strOut+len);
len += 2;
strIn ++;
}
strOut[len] = '\0';
return len;
}

void main()
{
char * str="我爱编程";
char szOut[100];
str2Hex(str,szOut);
printf(szOut);
getchar();
}

//不过我的结果和你的不一样,真正的16进制值应该是“CED2B0AEB1E0B3CC”
taodm 2006-09-30
  • 打赏
  • 举报
回复
#include <sstream>
也许还需要#include <iomanip>
redstorm_fyy 2006-09-30
  • 打赏
  • 举报
回复
楼主说的是把数据转化成16进制的字符串,举的例子却不是16进制转化后的结果,而是非负10进制的结果,我给一个16进制的转化

//字符转化表
char tb[]= \
{
"0123456789abcde"
};
int main()
{

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",result);
}

taodm 2006-09-30
  • 打赏
  • 举报
回复

#include <sstream>
using namespace std;
q55655 2006-09-30
  • 打赏
  • 举报
回复
您教育的是,可是现在手头上没书,第一个错误是'ostringstream' : undeclared identifier
nonplus 2006-09-29
  • 打赏
  • 举报
回复
taodm(taodm) 我 编译不过去,我需要填加什么头文件。
nonplus 2006-09-29
  • 打赏
  • 举报
回复
怎么我输出的结果是5个1
飞哥 2006-09-29
  • 打赏
  • 举报
回复
UNICODE编码转16进制?
天啊,你是不是要判断是否是中文啊?
不用转
区分汉字和英文?要么全转换成UNICODE,然后算,要么:

汉字内码:
GBK范围:
1st byte 2nd byte
0x81~0xfe 0x40~0x7e and 0x80~0xfe
BOOL isChineseChar(const char ch)
{
if( ch & 0x80 )
{
// ch 为汉字或全角字符
return TRUE;
}
return FALSE;
}

#include <iostream.h>
#include <string.h>

int isChineseChar(const char ch)
{
if( ch & 0x80 )
{
// ch 为汉字或全角字符
return 1;
}
return 0;
}

int main()
{
char *a="我是中国人";
int i=0;
while(a[i])
{
cout<<isChineseChar(a[i])<<endl;
i++;
i++;
}
}
taodm 2006-09-29
  • 打赏
  • 举报
回复
ostringstream out;
for (int i = 0; i < strlen(str); ++i)
{
out << std::hex << (int)str[i];
}

string result = out.str();
nonplus 2006-09-29
  • 打赏
  • 举报
回复
回1楼的一个字符赋给一个整型变量 我要输入的汉字长度是可变的,怎么控制?
回3楼,当然这是个字符串。
taodm 2006-09-29
  • 打赏
  • 举报
回复
"我爱编程" 一共要8个字节,你用什么类型的变量来存?
int可只有4个字节。
m_nNightmire 2006-09-29
  • 打赏
  • 举报
回复
转换成 一个变量="5046808279327752"
//这里的变量是字符串还是超级大的一个整数?
yuanhan530 2006-09-29
  • 打赏
  • 举报
回复
汉字编码!?
还不会!!
楼下的接着来!
加载更多回复(1)

64,637

社区成员

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

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