Webシステム開発の雑多なアウトプット

AWS、プログラム、OSS等を中心に良かった本も。

【Java】文字列の文字コード変換

Stringの内部にあるのはchar型 (16進数で4桁) の配列であって、byte型 (16進数で2桁) の内部データは存在しません。
char型のまま16進数で出力する場合は次の通り。

String str = "123ABC漢字";
int len = str.length();

for (int i = 0; i < len; i++) {
    char c = str.charAt(i);
    System.out.println(Integer.toString*1;
}


・StringをUTF8のbyte配列に変換してから出力するなら以下になります。

try {
    String str = "123ABC漢字";
    byte[] b = str.getBytes("UTF8");
    int len = b.length;
    for (int i = 0; i < len; i++) {
        System.out.println(Integer.toString(b[i] & 0xFF, 16));
    }
    } catch (java.io.UnsupportedEncodingException e) {
        e.printStackTrace();
    }


*1:int)c, 16