• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:16進数の数値を変数に代入したい)

16進数の数値を変数に代入する方法とは?

このQ&Aのポイント
  • 16進数の数値を変数に代入する方法を教えてください。
  • 文字コードを復号して文字列を出力するためのコードでエラーが発生しています。解決方法を教えてください。
  • 入力された16進数の数値を2桁ずつに分割し、文字コードとして変換しています。しかし、エラーが発生しています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

/* 間違えた */ class Q3172272 { public static void main(String arg[]) { String str_code = arg[0]; //入力値 String divice_code = ""; //入力値の2桁ずつの文字コード byte[] code_ary = new byte[str_code.length() / 2]; //divice_codeの16進数整数 String maked_char = ""; //Shift_JISで復号した文字列 for(int i = 0 ; i < str_code.length() / 2 ; i++){ Integer CodePoint; /* 配列にしてはいけなかった。以下添字全部削除 */ divice_code = str_code.substring(i * 2,i * 2 + 2); CodePoint = Integer.parseInt(divice_code,16); /*添字削除 */ System.out.println(CodePoint); /*添字削除 */ code_ary[i] = CodePoint.byteValue(); /*添字削除 */ } try { maked_char = new String(code_ary,"Shift_JIS"); System.out.println(maked_char); } catch(Exception e) { System.err.println("error!"); } } }

19746999
質問者

補足

himajin100000様 ご回答ありがとうございます。 ソースをそのままコピーして コンパイルすると Q3172272.java:14: 互換性のない型 検出値 : int 期待値 : java.lang.Integer CodePoint = Integer.parseInt(divice_code,16); となるので、 以下のようにしたらうまくいきました。 ありがとうございました。 ------------------------------- class Q3172272 { public static void main(String arg[]) { String str_code = arg[0]; //入力値 String divice_code = ""; //入力値の2桁ずつの文字コード byte[] code_ary = new byte[str_code.length() / 2]; //divice_codeの16進数整数 String maked_char = ""; //Shift_JISで復号した文字列 for(int i = 0 ; i < str_code.length() / 2 ; i++){ int CodePoint; divice_code = str_code.substring(i * 2,i * 2 + 2); CodePoint = Integer.parseInt(divice_code,16);//右辺と左辺のデータ型を合わせる System.out.println(CodePoint); Integer CodePointObject = new Integer(CodePoint);//CodePointの値をもつIntegerオブジェクト生成 code_ary[i] = CodePointObject.byteValue(); } try { maked_char = new String(code_ary,"Shift_JIS"); System.out.println(maked_char); } catch(Exception e) { System.err.println("error!"); } } }

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

回答は先を越されてしまったので書きませんが(同じなので)、 ついでに質問です。 catch(Exception e) { System.err.println("error!"); } error! だというメッセージだけ出されてもうれしくもなんともないので (今回は一箇所だけですが複数あった場合にどれだかわからなくなる)、 せめて e.toString() くらいは出したほうがいいと思うのですが、 なぜこうしているのでしょうか?

すると、全ての回答が全文表示されます。
回答No.1

class Q3172272 { public static void main(String arg[]) { String str_code = arg[0]; //入力値 String divice_code = ""; //入力値の2桁ずつの文字コード byte[] code_ary = new byte[str_code.length() / 2]; //divice_codeの16進数整数 String maked_char = ""; //Shift_JISで復号した文字列 for(int i = 0 ; i < str_code.length() / 2 ; i++){ Integer[] CodePoint = new Integer[2]; divice_code = str_code.substring(i * 2,i * 2 + 2); CodePoint[i] = Integer.parseInt(divice_code,16); System.out.println(CodePoint[i] ); code_ary[i] = CodePoint[i].byteValue(); } try { maked_char = new String(code_ary,"Shift_JIS"); System.out.println(maked_char); } catch(Exception e) { System.err.println("error!"); } } } ===== http://homepage3.nifty.com/jgrammar/ja/tools/codeval0.htm を利用してShift_JISで「あ」が82A0であることを調べた後 javac Q3172272.java java Q3172272 82A0 130 160 あ

すると、全ての回答が全文表示されます。

関連するQ&A