多くの異なる値に対する文字列比較の代わりに int 比較を実行できるように、8 文字の 16 進コードの文字列を整数に変換しようとしています。
これは C++ ではかなり簡単ですが、Java で行う必要があります。私が満たす必要があるテストケースは、基本的に「AA0F245C」をintに変換してからその文字列に戻して、正しく変換されていることを確認することです。
私は次のことを試しました:
int decode = Integer.decode("0xAA0F245C"); // NumberFormatException
int decode2 = Integer.decode("AA0F245C"); //NumberFormatException
int parseInt = Integer.parseInt("AA0F245C", 16); //NumberFormatException
int valueOf = Integer.valueOf("AA0F245C", 16); //NumberFormatException
また、一度に2文字ずつ実行して結果を掛けてみましたが、変換は機能しますが、数値が正しくありません。
int id = 0;
for (int h = 0; h < hex.length(); h= h+2)
{
String sub = hex.subSequence(h, h+2).toString();
if (id == 0)
id = Integer.valueOf(sub, 16);
else
id *= Integer.valueOf(sub, 16);
}
//ID = 8445600 which = 80DEA0 if I convert it back.
ご存知のように、私はサードパーティのライブラリを使用できないため、これは Java 標準ライブラリで行う必要があります。
よろしくお願いいたします。