■要約
Javaで16進数をASCII文字列へ変換する目的で、コード(※詳細下記)実行すると、文字コードがUTF-8で変換が掛かります(Shift-jisでの変換が希望です)。
※16進数(Shift-jis:"82A082A282A482A682A8")
⇒ASCII文字列("あいうえお")
■前提
●win10
●Eclipse:2019-06 (4.12.0)
※文字コードの設定について、こちらを参照して「Shift-JIS」に変更済です。
★実行環境
上記Eclipse上で実行、同コンソール上にテスト出力しています。
●『あいうえお』の16進数:
・UTF-8 : 3042304430463048304a
・Shift-JIS : 82A082A282A482A682A8
■不明点
こちらのサイトを参考に、以下コードを実行すると、
//①.変更したい対象の16進数を指定 String hexStr="82A082A282A482A682A8"; //②.最終outputを入れるStringBuilder型を定義 StringBuilder output = new StringBuilder(""); //③.①の16進数を4文字ずつ切り出して、文字列として②変数に格納 for (int i = 0; i < hexStr.length(); i += 4) { String str = hexStr.substring(i, i + 4); output.append((char) Integer.parseInt(str, 16)); } //④.結果出力 System.out.println(output.toString());
以下が出力されます。
???芦? ```※先頭行で指定する16進数を「__3042304430463048304a__」とすると、『__あいうえお__』が出力されます。 ### ■試したこと(がいずれでも解決せず…) 文字コードを指定する目的で以下コードに変更の上実施したのですが、 結果は変わりませんでした。 ※上記コードに対して、「>」行が、追記行。 ```ここに言語を入力 String hexStr="82A082A282A482A682A8"; StringBuilder output = new StringBuilder(""); for (int i = 0; i < hexStr.length(); i += 4) { String tmp_str = hexStr.substring(i, i + 4); > //文字コードを指定する目的で、文字列データをbyte型経由。 > byte[] tmp_byte = new String(tmp_str).getBytes("SJIS"); > String str = new String(tmp_byte); output.append((char) Integer.parseInt(str, 16)); } System.out.println(output.toString());
解決方法について、ご存じの方がいらっしゃりましたら、
ご教示のほど、何卒よろしくお願いいたします。
不明点等ありましたら、その旨ご教示くださいますと幸いです。
回答3件
あなたの回答
tips
プレビュー