汉字编码转换(汉字转UTF)
得到二进制码:
规则很简单,只有两条:
得到UTF8编码后字节:
我们以第一个字节 11100110 为例,其他字节逻辑都是相同的。在这里11100110是以【补码】的形式存在的,那我们想转化成10进制,需要先推算出原码,要想推算出原码,我们得先知道原码转补码的逻辑,然后再逆向推理即可:
那补码转原码的逻辑就是:
得出 11100110 的原码 10011010,符号位(最高位)为1,代表负数,数值位转10进制为26,那合起来就是 -26。
二进制转16进制就简单许多,只需要从低位起每4位一组分别计算出值即可,仍然以11100110为例:
按照上述的方法,汉字“春”最终得出的10进制为:
而最终的16进制为:
汉字转16进制还是用的挺多的,浏览器url编码的时候也是默认转成16进制,只是每个编码结果前增加了%:
同时Java中的URLEncoder.encode方法也是一样:
编写测试代码:
运行结果: