C++ ASCII转字符函数

C++ ASCII转字符函数,第1张

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码 转成字符串等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10104728.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存