Network:java中文转byte出现负数问题

字节的释义

字节(Byte) 是计算机信息技术用于计量存储容量的一种计量单位,通常情况下 1字节 = 8位(bit),也表示一些计算机编程语言中的数据类型和语言字符。

字符与字节

ASCII码:1个英文字母(不分大小写)占1个字节的空间,1个中文汉字占2个字节的空间。一个二进制数字序列,在计算机中作为一个数据单元,一般为8位二进制数,换算为十进制。最小值是0,最大值是255。如一个ASCII码就是1个字节。

UTF-8编码:1个英文字符等于1个字节,1个中文(含繁体)等于3个字节。

Unicode编码:1个英文字符等于2个字节,1个中文(含繁体)等于2个字节。

符号:英文标点占1个字节,中文标点占2个字节。

GBK编码:采用双字节bai8位表示,总体编码范围为duzhi 8140 -- FEFE,首字节在 81 -- FE 之间,尾dao字节在 40 -- FE 之间。

java中文转byte出现负数的情况

ASCII是7位编码,只使用bai前7位,du第8位补0,所以转换成整数始终为正数,而GBK是8位编码,也就是说一个字节中的第8位可以为1,如1010 1101,而将其转换成byte类型时,byte值为10101101,以补码存储,第8位被当成符号位,当然是负数了,值为:-83。
“何”字的GBK编码是:BA CE(1011 1010 1100 1110),两个字节第8位都为1,对byte类型来说,都被理解为最高位符号位。这样值就变成-70和-50了。

 

posted @ 2021-01-18 14:22  怒吼的萝卜  阅读(566)  评论(0编辑  收藏  举报