二char合一

来源:互联网 发布:mac os 不能升级 编辑:程序博客网 时间:2024/05/01 14:07

今天学nio,用ByteBuffer的getChar方法,结果把我文件内容“lala”给输出成了“污污”。显然,“污”这个字严重玷污了我纯洁的形象,所以我决定把罪魁祸首逮出来。

首先英文占一个字节,中文占两个字节,所以四个英文字符变成两个中文字符就很容易理解了,肯定是两两合并成一个输出了。然后,一个char占两个字节,也就是16位,用来存放8位的英文字符时,只用到低8位,还有高8位空着,空着干啥?补上不就变成一个16位汉字了吗?因此:

char[] cs="la".toCharArray();char a=(char) ((cs[0]<<8)+cs[1]);System.out.println(a);

输出“污”。
有空看看ByteBuffer源码,其getChar()方法的实现一定类似。
(ps:我再也不能直视lalala了,妹的我每次测试涉及到字符串用的都是lalala)

0 0
原创粉丝点击