一個漢字佔幾個字節你真的記住了嗎?

一個漢字佔幾個字節是否是不太好記呢,編碼不同則佔字節位就不同。下面用一段簡短的代碼瞭解一下一個漢字佔幾個字節。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

相關文章
相關標籤/搜索