読者です 読者をやめる 読者になる 読者になる

Java で文字列を16進ダンプする方法

Java

ときどき使うけど覚えていられないメモ。

だいたいはコレで OK

String str = "ジャバ";

// EUC-JP 
for (byte aByte : str.getBytes("EUC-JP")) {
    System.out.printf("%2X", aByte);
}
// A5B8A5E3A5D0
String str = "ジャバ";

// Shift_JIS
for (byte aByte : str.getBytes("Shift_JIS")) {
    System.out.printf("%2X", aByte);
}
// 83578383836F

こういうのも

UTF-16 *1 でいいときはなぜかこう書いてしまう。

String str = "ジャバ";

for (int i = 0; i < str.length(); i++) {
    String hex = Integer.toHexString(str.charAt(i));
    System.out.print(hex.toUpperCase());
}
// 30B830E330D0

なぜか周囲は ASCII どころか JIS X 0208 まるごと覚えているような人が珍しくない。

*1:UTF-16BE