如何判断字符是中文还是数字 计算机是怎么显示字符的?

[更新]
·
·
分类:互联网
1503 阅读

如何判断字符是中文还是数字

计算机是怎么显示字符的?

计算机是怎么显示字符的?

VC6里字符编码是用MBCS(Multi-Byte Chactacter System)
,char类型实际上就是一个8 bit的空间,中文字符“个”在VC6里占用2个char,2字节,s1指向的内存上的数据为(10111000, 11110110),如果用十进制表示也就是(184, 246)。
MBCS的话一个字符占用的空间不是定长,如果是ASCII码则是8 bit,GBK汉字则是16 bit。
ASCII码的范围用十进制表示是[0, 127]
,单字节字符
,用来表示英语字母以及数字还有其他一些符号。
GBK汉字是双字节字符
,前8 bit范围是[129, 254](DEC)
,后8 bit范围是[64, 254](DEC)。
可以看到这中西字符编码是互不交叉的,printf的东西全送进屏幕缓冲区里,程序读取屏幕缓冲区上“个”的前8 bit,也就是184(DEC),发现不在单字节字符码表
(ASCII码表范围是[0, 127](DEC),184127)内,就知道这不是个单字节字符。
所以指针下移,往后再读8 bit
,读到246(DEC),两个字节一共16 bit,拿去GBK汉字码表查,查有此字,就显示出来。
判断是汉字还是字母的方法,当然就是根据该字节值所处的范围来判断是单字节字符(字母阿拉伯数字其他半角/通信符号)还是双字节字符(汉字等等)。
我简单写个程序方便大家理解:
让我们来看看结果:
所以我们还可以这样玩:
MBCS根据码表来看可以说是中英文无歧义
的,因此可以区分该显示中文还是英文。

c语言如何判断中英文字符?

利用中英文之间ASCII十进制编码的不同,来区分。
首先,先确定自己的编译器编译一个中文是使用多少个字节(ps:一般是一个字节一个英文,而两个字节一个中文,pta平台是三个字节一个中文)
#includeltstdio.hgt
#includeltstring.hgt
int main()
{
char str[100]
int i
gets(str)
for(i0iltstrlen(str)i )
printf(#34%d #34,(int)str[i])
return 0
其次,中文和英文最大的差别就是ASCII编码的不同,中文是负值,英文是正值。使用if…else语句来判断即可