看一段以下代码:
import java.util.Arrays; public class Test { public static void main(String[] args) { byte[] bytes = "中".getBytes(); System.out.println(Arrays.toString(bytes)); // 输出[-28, -72, -83] } }
为什么中文的 中
转换成 byte
类型后 就变成了 [-28, -72, -83]
在utf-8编码中, 一个中文字符占用3个字节.
在GBK编码中, 一个中文字符占用2个字节.
我们在 这个网站 查询 中
字的 utf-8
编码16进制是 E4B8AD
对应的二进制是 11100100 10111000 10101101
假定二进制是带符号位的, 我们需要给它们转换成十进制, 步骤如下
十六进制: E4 B8 AD 二进制: 1110 0100 1011 1000 1010 1101 去掉补码: 1110 0011 1011 0111 1010 1100
十六进制: E4 B8 AD 二进制: 1110 0100 1011 1000 1010 1101 去掉补码: 1110 0011 1011 0111 1010 1100 反码: 0001 1100 0100 1000 0101 0011
十六进制: E4 B8 AD 二进制: 1110 0100 1011 1000 1010 1101 去掉补码: 1110 0011 1011 0111 1010 1100 反码: 0001 1100 0100 1000 0101 0011 十进制: 28 72 83
结果: -28 -72 -83