国家标准《信息交换用汉字编码字符集 基本集 GB 2312-80》里预先定义了形如下图的汉字及其区位码对照关系,内含6763个汉字,也可以在线查询:
左上角的“32”代表“区码”,10进制。“李”字横、纵坐标“78”代表“位码”,10进制。合起来讲就是,“李”字的区位码是3278,10进制。
根据下列规则可以将某汉字的区位码转为GB2312编码:
- 将区码由十进制转化为十六进制。
- 将所得十六进制加上A0,得到GB2312编码的高字节。
- 将位码由十进制转化为十六进制。
- 将所得十六进制加上A0,得到GB2312编码的低字节。
- 组合区码、位码的十六进制数值,区码在高字节,位码在低字节。
- 得到最终的GB2312编码。
以“李”字为例,推到过程如下:
- 将区码32转化为0x20。
- 加上0xA0为0xC0。
- 将位码78转化为0x4E。
- 加上0xA0为0xEE。
- 组合区和位,为0xC0EE。
- 得到“李”字的GB2312编码为0xC0EE。通过在线工具可以验证我们的结果。