为什么中文的中转换成byte类型后 就变成了[-28, -72, -83]
原理如下在utf-8编码中, 一个中文字符占用3个字节. 在GBK编码中, 一个中文字符占用2个字节.
我们在这个网站查询中字的utf-8编码16进制是 E4B8AD 对应的二进制是11100100 10111000 10101101
假定二进制是带符号位的, 我们需要给它们转换成十进制, 步骤如下
第一步: 去掉补码 (也就是二进制值减1) 进制字节1字节2字节3十六进制E4B8AD二进制1110 01001011 10001010 1101去掉补码1110 00111011 01111010 1100 第二步: 将补码转换成反码(1变0, 0变1) 进制字节1字节2字节3十六进制E4B8AD二进制1110 01001011 10001010 1101去掉补码1110 00111011 01111010 1100反码0001 11000100 10000101 0011 第三步: 将反码转换成十进制 进制字节1字节2字节3十六进制E4B8AD二进制1110 01001011 10001010 1101去掉补码1110 00111011 01111010 1100反码0001 11000100 10000101 0011十进制287283 第四步: 带上符号位(负号) 结果: -28 -72 -83