※ ChatGPTを利用し、要約された質問です(原文:16進数の数値を変数に代入したい)
16進数の数値を変数に代入する方法とは?
このQ&Aのポイント
16進数の数値を変数に代入する方法を教えてください。
文字コードを復号して文字列を出力するためのコードでエラーが発生しています。解決方法を教えてください。
入力された16進数の数値を2桁ずつに分割し、文字コードとして変換しています。しかし、エラーが発生しています。
いつもお世話になっております。
文字コードを復号して文字列を出力したいのですが
以下のdecode_charクラスのコードの13行目でエラーになります。
解決方法ご存知でしたら、ご回答いただけないでしょうか
よろしくお願いします。
例)文字列"82a0"を入力値する。
0x82を16進数の数値として変換したいが
NumberFormatExceptionが発生。
------------------------------------------------
class decode_char
{
public static void main(String arg[])
{
String str_code = arg[0]; //入力値
String divice_code = ""; //入力値の2桁ずつの文字コード
byte code_ary[] = null; //divice_codeの16進数整数
String maked_char = ""; //Shift_JISで復号した文字列
for(int i = 0 ; i < str_code.length() / 2 ; i++)
{
divice_code = str_code.substring(i * 2,i * 2 + 2);
code_ary[i] = Integer.parseInt("0x" + divice_code);
}
try
{
maked_char = new String(code_ary,"Shift_JIS");
System.out.println(maked_char);
}
catch(Exception e)
{
System.err.println("error!");
}
}
}
補足
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!"); } } }