vc 控制台汉字转数字显示

本文介绍了一个使用VC6制作的演示程序,用于在串口通讯中将汉字转换为数字显示。代码示例包括936编码(GBK)的处理,并指出对于使用Unicode编码的设备,需要进行相应的解码。此外,还提供了C#代码示例进行Unicode(UTF8)编码的十六进制与字符之间的转换。参考链接提供了更多相关信息。
#include <iostream>
#include <sstream>
using namespace std;
const string ChineseToNum(char const *array,int len);
unsigned char * NumToChinese(const string &str,int len);
int main()
{	
	const char mystr[]={"找一个承认失恋的方法,让心情好好放个假。"};
	const string str=ChineseToNum(mystr,strlen(mystr));
	cout<<mystr<<" 的十进制是:"<<endl<<str<<endl;//当然你也可以弄成十六进制
	unsigned char * array=NumToChinese(str,strlen(mystr));
	cout<<endl<<"再转成汉字:"<<endl<<array<<endl;
	delete []array;
	return 0;
}
//把汉字显示成十进制的数字
const string ChineseToNum(char const *array,int len)
{
	ostringstream myoutstream;
	const char *p=array;
	for (int i=0;i<len;++i)
	{
		unsigned char ch=p[i];
		//cout<<(int)ch<<" ";//这里为了清楚显示,加了个空格
		myoutstream<<(int)ch<<" ";//这里为了清楚显示,加了个空格
	}
	return myoutstream.str();
}
//把上面数字变成汉字
unsigned char * NumToChinese(const string &str,int len)//len参数要和上面函数的一致
{
	istringstream myinstream(str);
	unsigned char *array=new unsigned char[len+1];
	int tmp=0;
	int i=0;
	while (myinstream >> tmp)
		array[i++]=tmp;
	array[i]='\0';
	//cout<<array<<endl;
	return array;//在调用的地方千万别忘记delete
}
/*
小记:函数设计感觉有些不对劲,希望大家指正。
明天中秋节,祝大家中秋节快乐,阖家欢乐!
*/

运行结果:



在串口通讯中,突然用到这个,于是用vc6做了个demo



代码下载地址:http://download.csdn.net/download/jsjrj01/8216717

上面使用的都是936 (ANSI/OEM - 简体中文 GBK)编码


另,一些设备串口通讯使用的是unicode,这时候我们解码就要使用unicode

编码包含的是中文,英文,俄文还是日文什么的,只要把它转换成Unicode就能被识别,而不用再考虑其他字符集的问题,UTF8是Unicode得一种实现方式。

俄语:Русскийязык
英语:English
平假名にほんご
法文:Fédération internationale de football association,简称FIFA,中文简称“国际足联”


unicode编码(UTF8)的十六进制 与字符 互相转换

C#代码 下载地址:http://download.csdn.net/detail/jsjrj01/8217951

参考资料:

http://www.cnblogs.com/xingzh/articles/1675047.html

http://lcx.cc/?i=3324


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值