- ベストアンサー
java 16進数文字列を0x1足した文字列に変換
"FFFF FFFF FFFF FFF0" を "FFFF FFFF FFFF FFF1" にしたいです。 10進の数値に変換 1足す それを16進の数値に変換 それを文字列に変換 というようにしてたのですが 例のような大きな数値だと10進に変換するところでLongのmaxを超える為ダメでした。 お知恵をお貸しくださいますようお願い致します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
BigIntegerを使うとか? String str = "FFFF FFFF FFFF FFF0"; BigInteger bi = new BigInteger(str.replace(" ", ""), 16); String result = bi.add(new BigInteger("1")).toString(16).toUpperCase(); StringBuffer sb = new StringBuffer(); int remain = result.length() % 4; if (remain > 0) { sb.append(result.substring(0, remain)); } for (int i = 0; i < result.length() / 4; i++) { sb.append(" "); sb.append(result.substring(i * 4 + remain, (i + 1) * 4 + remain)); } System.out.println(sb); StringBufferから始まるところは計算結果を指定のフォーマットに変換するコードですが、ざっと思いついたままに書いたのでもっとうまい書き方がありそうです。 BigIntegerについてはJavaDocでも読んでください。 http://docs.oracle.com/javase/jp/6/api/java/math/BigInteger.html
お礼
ありがとうございます! 教えて下さったコードで出来ました! BigInteger勉強します! 本当にありがとうございました。