二char合一

今天学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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值