一个汉字编码是两个负数

 

 

 

 


 

一个汉字对应的两个byte,都是负数。都是字节首位为1。

 

GB2312和GBK每一个汉字由2个字节组成,这2个字节的ASCII码大小分别是:
gb2312:

high8 = 0xa1-->0xfe (161 - 254)
low8 = 0xa1-->0xfe  (161 - 254)

gbk:

high8 = 0x80-->0xfe (128 - 254)
low8 = 0x40-->0xfe (64 - 254)

GBK: 汉字国标扩展码,基本上采用了原来GB2312-80所有的汉字及码位,并涵盖了原Unicode中所有的汉字20902,总共收录了883个符号, 21003个汉字及提供了1894个造字码位。 Microsoft简体版中文Windows 95就是以GBK为内码,又由于GBK同时也涵盖了Unicode所有CJK汉字,所以也可以和Unicode做一一对应。

GB码,全称是GB2312-80《信息交换用汉字编码字符集 基本集》,1980年发布,是中文信息处理的国家标准,在大陆及海外使用简体中文的地区(如新加坡等)是强制使用的唯一中文编码。P-Windows3.2和苹果OS就是以GB2312为基本汉字编码, Windows 95/98则以GBK为基本汉字编码、但兼容支持GB2312。GB码共收录6763个简体汉字、682个符号,其中汉字部分:一级字3755,以拼音排序,二级字3008,以偏旁排序。该标准的制定和应用为规范、推动中文信息化进程起了很大作用。

GBK编码是中国大陆制订的、等同于UCS的新的中文编码扩展国家标准。GBK工作小组于1995年10月,同年12月完成GBK规范。该编码标准兼容GB2312,共收录汉字21003个、符号883个,并提供1894个造字码位,简、繁体字融于一库。

 

汉字存放在计算机中,称为:机内码。
它和ASCII码,是有根本区别的。

ASCII码是用来存放阿拉伯数字、英文、符号等等,和汉字,没有一丁点关系。

“中”的机内码是 D6D0。
D6D0,当成有符号数,写成十进制数字就是-10544;
D6D0,当成无符号数,写成十进制数字就是 54992。

 

 

【参考】

用char[]存一个中文字,每个元素的为负数是怎么得出来的?-CSDN论坛 https://bbs.csdn.net/topics/390814154

java中一个汉字转换成两个字节的时候,这两个字节都是负数吗? - 开源中国 https://www.oschina.net/question/158457_25160

汉字的ASCII码对照表 - hdflj的专栏 - CSDN博客 https://blog.csdn.net/hdflj/article/details/5872711

汉字的"ascii"码为什么是负数?_百度知道 https://zhidao.baidu.com/question/942277869400400652.html

 

posted @ 2019-03-09 12:15  ostartech  阅读(968)  评论(0编辑  收藏  举报