一个汉字占几个字节你真的记住了吗?

一个汉字占几个字节是否是不太好记呢,编码不同则占字节位就不同。下面用一段简短的代码了解一下一个汉字占几个字节。java

示例

String s = "情系IT";
        try {
            byte[] bytes1 = s.getBytes("gbk");
            for (byte b : bytes1) {
                System.out.print(Integer.toHexString(b & 0xff)+"  ");
            }
            System.out.println();
            byte[] bytes2 = s.getBytes("utf-8");
            for (byte b : bytes2) {
                System.out.print(Integer.toHexString(b & 0xff)+"  ");

            }
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

下面是运行结果:
学习

解析

  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编码时,一个汉字两个字节,一个字母一个字节。

若是想看其余编码下的状况,可复制上面的代码,将字符串进行其余编码查看便可。
注意:若是字符串不进行编码,则默认为项目的编码。编码

若是文章对您有帮助,请记得点赞关注哟~
欢迎你们关注个人公众号:情系IT,每日推送技术文章供你们学习参考。code

相关文章
相关标签/搜索