【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;
}
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();
}
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