在C++中,如何将汉字与字母和数字转换成ASCⅡ码?

来源:百度知道 编辑:UC知道 时间:2024/05/11 18:09:03
正在设计一个通用的回文程序,字符的可以了.但是汉字的不行.想将他们一起转化为ASCⅡ码,然后将后半部分逆置,再进行比较.

C和C++中,字符和ASCII码值是等价的,不用转换.比如'A'和65是等价的.
输出一个字符的ascii码的话,方法如下:
include <stdio.h>
void main()
{
int a;
char b='A';
a=b;
printf ("%d",a);//运行后的结果就是65,这就是A对应的ASCII码了。
}
——————————————————————
也可以直接这么写:
include <stdio.h>
void main()
{
char b='A';
printf ("%d",b);
}
这样也能输出A的ASCII码 。

我觉得你有理由先转成Unicode,以便于字符串的分析。记得用UltraEdit时,HEX模式下,不管我存成什么格式(UTF-8还是ANSI),结果HEX下总是FE FF,然后是Unicode。后来我才弄明白,写到盘上的确是我选择的编码(UTF-8或ANSI),但是UltraEdit是个编辑软件,它能确认是文本文件的话,HEX模式下并不是该文件的实际存盘字节流,而是其内存中的存放方式,FE FF前导符只是强调了不是ANSI。在内存操作字符串使用Unicode有太多的优势,以至于很多编程环境中,字串变量就是Unicode的,数据库中直接存放的数据,也是Unicode的,只有涉及输入输出时(比如传统的文本文件),才会进行转换。除非你还要处理BMP以外的字符,否则UCS-2很方便。

如果是汉字的话,就两个字节两个字节一读.
但是如果你英文汉字混在一起就比较麻烦了.
你得一个个字符的读,然后判断是否是中文首字符.

当然如果你的程序是unicode的就没这些问题了.

汉字不包含于ASCII字符集中。
你需要UNICODE字符集才包含汉字。
ASCII一律是16位的。UNICODE字符集一律是32位的。
其实用UNICODE字符集