一个汉字占几个字节你真的记住了吗?
一个汉字占几个字节是不是不太好记呢,编码不一样则占字节位就不一样。下面用一段简短的代码了解一下一个汉字占几个字节。
示例
下面是运行结果:
解析
1. Integer.toHexString(int a),这个是java API提供的一个方法,目的是返回整数参数的字符串表示形式,作为16位中的无符号整数。
2. 为什么要用b & 0xff ?
Integer.toHexString(int a),需要的是一个int类型的参数。
0xff代表的就是16进制的11111111。
我们知道byte是1个字节,int是4个字节,也就是要将8位转换为32位。如果无符号位的话,我们直接补0即可。因此&0xff就是为了保证符号位。
举个例子:-127转为二进制为11111111,取反求补则为10000001,转十六进制则为81,继续转成十进制,看成无符号数就会发现变成了129。
总结
根据结果我们可看出,
字符串是utf-8编码,一个汉字三个字节,一个字母一个字节。
字符串是gbk编码时,一个汉字两个字节,一个字母一个字节。
如果想看其他编码下的情况,可复制上面的代码,将字符串进行其他编码查看即可。
注意:如果字符串不进行编码,则默认为项目的编码。
版权声明: 本文为 InfoQ 作者【Java旅途】的原创文章。
原文链接:【http://xie.infoq.cn/article/f99cb76d776108e0d8044049f】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论 (7 条评论)