電子書籍の厳選無料作品が豊富!

"FFFF FFFF FFFF FFF0"

"FFFF FFFF FFFF FFF1"
にしたいです。

10進の数値に変換
1足す
それを16進の数値に変換
それを文字列に変換

というようにしてたのですが
例のような大きな数値だと10進に変換するところでLongのmaxを超える為ダメでした。
お知恵をお貸しくださいますようお願い致します。

A 回答 (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 …
    • good
    • 0
この回答へのお礼

ありがとうございます!
教えて下さったコードで出来ました!
BigInteger勉強します!

本当にありがとうございました。

お礼日時:2012/11/09 20:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!