2012-03-22 7 views
2

ファイルdata.hexでは、データは16進数の最初の桁が常に8未満の16進数形式で与えられます。 Javaで16進数から16進数に解析する際の例外

01FC 04BF 04C0 04C1 04C2 24C3 04C4 34C5 ... 

は、このファイルを解析し、私はこのコード

void read_hex_short(String filename, short[] shrt, int x, int y) throws Exception 
{ 
    String str; 
    Scanner s=new Scanner(new BufferedReader(new FileReader(filename))); 
    for(int i=0;i<height*width;i++) 
    { 
     str= s.next(); // i have tried str="0x"+s.next() but it didn't work 
     image[i]=(short)Integer.parseInt(str); 
    } 
    s.close(); 
} 

を書かれているが、私は最初の文字列、すなわち01FCのみを通過しながら発生はNumberFormatExceptionを取得していSHRT []配列内の値を格納します。 これらの16進数値を解析し、shrt []配列に格納するにはどうすればよいですか?

答えて

6

ヘックスを使用するように指示するには、Integer.parseInt(str, 16)を使用する必要があります。

0x7FFFより大きい値は配列内で負の値になります。Javaには符号なし数値型がありません(charと数えない限り)。

2

parseIntメソッドにradixパラメータを指定します。このように:

Integer.parseInt(str, 16)