b=a就可以啊
因为字符型存的本来就是ASCII,在输出时可以自动根据变量类型往文件或标准设备写入的
、
补充的意思没看懂。。。
“将a赋到其中一个元素上”是类似b[0]=a
那也可以啊
这个是因为你对汉字的编码不了解引起的。
对于GB2312的字符(就是我们平时所说的区位),一个汉字对应于两个字节。
每个字节都是大于A0(十六进制),
倘若,你的第一个字节大于A0,而你的第二个字节小于A0,那么它应当不是汉字(仅仅对于GB2312),不知道你能否理解我说的。
如果真的发生这种情况(你的第一个字节大于A0,而你的第二个字节小于A0),那么系统找不到一个汉字与它对应,极有可能显示是两个字符(ASCII),第一个是就如你上面的?,第二个字符可能就是正常的ASCII码。
对于现在的GBK编码是要求汉字每个字节都超过80(十六进制,对应于十进制的128),当然有一些码是没有汉字对应的。
现在还有BIG5码、万国码,现在的汉字编码也复杂了。
哎。
了解就行。
#include <stdioh>
char convert(char p[])
{
int i=0;
while(p[2i]!='\0'&&p[2i+1]!='\0')
{
char c = p[2i];
if(c<='9')
p[i] = (c-'0')<<4;
else if(c<='F')
p[i] = (c-'A'+10)<<4;
else
p[i] = (c-'a'+10)<<4;
c = p[2i+1];
if(c<='9')
p[i] += (c-'0');
else if(c<='F')
p[i] += (c-'A'+10);
else
p[i] += (c-'a'+10);
i++;
}
p[i] = '\0';
return p;
}
void main()
{
char judge[] = "3331326120C7B0baf3";//只能是字符串的ASCII码形式的数据,舍去0x前缀和空格等
printf("转换前:[%s]\n",judge);
printf("转换后:[%s]\n",convert(judge));
}
转换前:[3331326120C7B0baf3]
转换后:[312a 前后]
可以用强制转换输出字符
int p=121;
cout<<(char)p<<endl;
p=0171;
cout<<(char)p<<endl;
p=0X79;
cout<<(char)p<<endl;
以上就是关于C++ ASCII转字符函数全部的内容,包括:C++ ASCII转字符函数、matlab中 ASCII码转化为字符(中文)、C++ 字符型ASCII码 转成字符串等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)