ascll编码相关问题
①ascll编码之后一定是纯数字吗?
②百度搜索字符串ascll编码,看到两种方式,但是我有个问题,
char c = '你';
byte b =(byte)c;
int b1 = c; //字符的ascii码值
如果c变量值是a的话,输出的结果都是97,但是如果c是“你”,值就不一样了,这是为什么呢?
望路过大佬解惑,200金币奉上,拜托回答详细一点点,我自己查了太多反而晕了,谢啦
①首先你要了解什么是ascii码(American Standard Code for Information Interchange)
它就是将每个英文一母及部分符号用数值来表示,所以,它一定是数值,当然因为十六进制也可以表示数值,所以纯数字不准确
②(不夸张地说,在计算机方面,百度的技术文章一半以上都是错的,真正的程序员不会用百度来查找或交流技术的)
你的
char c = '你';
正如你的③所说,ASCII只针对英文字母,汉字不存在ASCII码的,它用的是GB2312或GBK/UTF8/unicode等汉字编码(不同语言,不同设置编码方式会不同,这就是汉字有乱码的原因)
③ 你应该用的是java语言,而java缺省的汉字编码是unicode的,汉字'你'的unicode值就是20320(0x4F60)
而你的byte b =(byte)c; 取得是它的低位0x60,也就是96
这个涉及计算机基础的知识,如编码及进制
C的值只有是a时结果才会是97,否则无论换成什么结果都不会是97
热门标签: