■不明点
Javaで、16進数文字列を、文字列として取得するプログラムを作成しています。
この際、16進数文字列を「ASCII」で読んで文字列化する旨、指定などはしていないのですが、以下プログラムにおいては、ASCIIで文字列化が掛かっています(実際問題として本件はそれでよい話ではあるのですが、、解釈ができずモヤモヤな次第です)。
なぜ指定無くとも、(UTF-8などではなく、)「ASCII」で文字列化されるのでしょうか?
環境依存等で、気づいていないだけでどこかで設定がされているのでしょうか?(…当たれるところ見たのですが、それらしきに至らず。)
以上、何卒よろしくお願いいたします。
■関連情報
●Java バージョン :8.251
●Eclipseバージョン:4.12(Eclipse上のエンコード設定諸々は、すべてutf-8です)
●参考にしたサイト:https://www.codeflow.site/ja/article/java-convert-hex-to-ascii
■プログラム
※文字列:「あいうえお」⇔16進数:「3042304430463048304a」と、ASCII変換で紐づいています。
java
1public class test1 { 2 public static void main(String[] args) { 3 //ASCIIから16進数 4 String asciiStr="あいうえお"; 5 char[]chars = asciiStr.toCharArray(); 6 StringBuilder hex = new StringBuilder(); 7 for (char ch : chars) { 8 hex.append(Integer.toHexString((int) ch)); 9 } 10 //① 11 System.out.println(hex.toString()); 12 13 //16進数からASCII形式 14 String hexStr="3042304430463048304a"; 15 StringBuilder output = new StringBuilder(""); 16 for (int i = 0; i < hexStr.length(); i += 4) { 17 String str = hexStr.substring(i, i + 4); 18 output.append((char) Integer.parseInt(str, 16)); 19 } 20 //② 21 System.out.println(output.toString()); 22 } 23} 24
//① 3042304430463048304a //② あいうえお
回答2件
あなたの回答
tips
プレビュー