c++16进制字符串转普通字符串的函数
比如我这儿有一个16进制的字符串stringa="e68891e788b1e4bda0";转出来应该是"我爱你";请问这个函数怎么实现;...
比如 我这儿有一个16进制的字符串 string a = "e68891e788b1e4bda0";
转出来应该是"我爱你";
请问这个函数怎么实现; 展开
转出来应该是"我爱你";
请问这个函数怎么实现; 展开
1个回答
展开全部
= =!大哥,16进制与各个进制的转换时通过2进制实现的。
你想转成中文?
代码中中文是不支持的。你要先转成2进制,然后再在中文编码里面查二进制对应的汉字才行。至于有没有2进制转成中文的编码数据库API就不知道了。
刚才去查了下。
C++中是有二进制转换成汉字的库的,如下
while (p != NULL)
{
sprintf (temp_string1, "0x%s", p);
sscanf (temp_string1, "%x", &temp_int);
printf("temp_string1=%d\n",temp_int);
memset (hanzi_string+i++, (unsigned char) (*((unsigned char *)&temp_int) | *((unsigned char *)&temp_int+1) |*((unsigned char *)
&temp_int+2) | *((unsigned char *)&temp_int+3)), 1);
printf("hanzi_string=%s\n",hanzi_string);
if (p != NULL) p = (char *) strtok (p+strlen (p)+1, " ");
}
你想转成中文?
代码中中文是不支持的。你要先转成2进制,然后再在中文编码里面查二进制对应的汉字才行。至于有没有2进制转成中文的编码数据库API就不知道了。
刚才去查了下。
C++中是有二进制转换成汉字的库的,如下
while (p != NULL)
{
sprintf (temp_string1, "0x%s", p);
sscanf (temp_string1, "%x", &temp_int);
printf("temp_string1=%d\n",temp_int);
memset (hanzi_string+i++, (unsigned char) (*((unsigned char *)&temp_int) | *((unsigned char *)&temp_int+1) |*((unsigned char *)
&temp_int+2) | *((unsigned char *)&temp_int+3)), 1);
printf("hanzi_string=%s\n",hanzi_string);
if (p != NULL) p = (char *) strtok (p+strlen (p)+1, " ");
}
更多追问追答
追问
这个在java中可以实现的。。。。
很简单就实现了。
我也是刚刚才开始做C++,完全搞不懂啊;
可以贴下全码么。。我看下用的什么库之类的。。。
追答
这个还真没做过啊,刚才去search了一圈,发现全是汉字转换成2进制的。
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=1076370 你去这个帖子看看 有一个回帖的写的挺好,就是太长了。有时间细心看看。
我上面发的用的就是字符串的标准库啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询