• ベストアンサー

java 16進数文字列を0x1足した文字列に変換

"FFFF FFFF FFFF FFF0" を "FFFF FFFF FFFF FFF1" にしたいです。 10進の数値に変換 1足す それを16進の数値に変換 それを文字列に変換 というようにしてたのですが 例のような大きな数値だと10進に変換するところでLongのmaxを超える為ダメでした。 お知恵をお貸しくださいますようお願い致します。

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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

k16tuaak
質問者

お礼

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

関連するQ&A

  • DOUBLE型の16進HEX文字列変換について

    12バイトのHEX文字列(FFFFFFFFFFFFFFFFFFFFFFFF)などを をいったん、10進に変換し、DOUBLE型の変数に設定し、 数値演算を行い 再度HEX文字列(FFFFFFFFFFFFFFFFFFFFFFFF)に変換を行いたいのですが、 変換の方法がわからず困っています。 HEX関数はLONGでしかおこなえないようで・・ すみませんが、ご教授いただけると助かります。 宜しくお願いいたします。

  • 数値を文字列に変換

    文字列を数値変換する関数はありますが、逆に数値を文字列に変換するにはどうやればよいのでしょうか?

  • 文字数が決まっていないの文字列を自動に取得して別の文字列に変換

    取得して切り出す文字列の長さが固定で無い場合には、どのようにしら良いのでしょうか? 例: ある適当な文字列を分割  ETUROGO → E T U R O G O        の様に一文字ずつ分割  各文字を他の文字列に変換  E→ 2 や T → 電話 のように全文字を  他の文字に変換  この文字列の長さが固定ならば範囲をして変換  する事が出来るのですが、  取得文字列(この場合は、ETUROGO)の長さが  3文字~20文字程度で決まっていない場合  どのようにしたら自動で変換されるのでしょうか?  LEN関数で文字数を取得  LEFT関数やMID関数等で文字列を切り出す。  という事までは考えたのですが。  文字数が変化してしまうとやり方が分かりません。  また、上記の場合は英文字なのですが同様に  文字列の長さが固定ではなく(4文字~20文字の間)  ”東京携帯配備” を ”東京” ”携帯” ”配備”  のように単語で分割し同様に他の文字列に変換  するという場合は、少し異なるのだと思うのですが  INDEX関数等を使えば良いのかな?  とも思うのですが過去の例を見ても理解出来ません。    どうかお教え願います。宜しくお願い致します。

  • access2000 クエリで文字列を数値に変換

    access2000 クエリで文字列を数値に変換 商品の管理DBをaccessで入力し、テーブルをexcelにエクスポートして並び替えやその他の編集をしています。 テーブルに「数量」というフィールドがあり、数字入力が主ですが、商品によっては「無制限」や「-」のように文字列を入力しなければならない為、「数量」は「数値型」ではなく「テキスト型」になっています。 excelへエクスポートした時に、「10」などは数値として認識させ、「無制限」などはそのままの文字列にしたいです。 クエリの式に「Val([数量])」としてみたところ、「10」は数値として変換されましたが、数値ではない文字列は全て「0」になりました。 また、「15,000」は「15」になりました。(カンマが文字列な為) これを 「10」→「10」(数値) 「無制限」→「無制限」(文字列) 「15,000」→「15000」(数値) にするような関数はありませんでしょうか。 excel2007のエラー処理(セルを選択した時に出る「!」で「数値に変換する」)と同じような挙動にしたいです。 宜しくお願いします。

  • 16進数の文字列を10進数の数値に変換する方法

    以下のように1バイト単位で区切られた16進数の文字列があったとします。 01 23 45 67 78 9A BC DE F0 これを10進数の数値に変換したいのですが、atoi()関数では無理のようです。 良い方法がありましたら教えていただけないでしょうか。 どうぞよろしくお願い致します。m(_ _)m

  • PHPでカンマ区切り文字列を数値に変換するには

    PHPでカンマ区切り文字列を数値に変換するにはどうすればいいのでしょうか。 例)$a="12201,11912"が文字列を認識されるのですが数値認識させたいです。 以上よろしくお願いします。

    • ベストアンサー
    • PHP
  • javaで文字変換したいんです。

    たとえば "82 A0 82 A2 82 A4 41 42 43 82 A6 82 A8 " という文字列を "あいうABCえお"に変換したい場合どのようにすればいいのでしょう? 変換前の文字コードはS-JISとします。 変換前の文字列はStringに入っているものとします。 String str="82 A0 82 A2 82 A4 41 42 43 82 A6 82 A8 "; //こんな感じ java は初めてで困ってます。 Cなら何とかなるんですが・・・ どうかお知恵をお授けください。

    • ベストアンサー
    • Java
  • 数値を文字列に変換する方法

    int rssi_dec = Convert::ToInt32("0X" + test02, 16); -----------(中略)----------------------- 一度、文字列だったものを数値に変換して、中略部分で計算をして、もう一度数値をHEXの 文字列に変換して、 String^ test このtestの中に代入したいと思っているのですが、どのようにすればよいのでしょうか? どうぞ、ご教授よろしくお願い致します。

  • カンマの含まれる文字列の数値変換方法について

    VB.NETでプログラミングしています。 String型の文字列を Double型の数値に変換するときに 一般的にはVal関数を使いますが、 カンマが含まれる文字列"111,111"を 数値変換したい場合には単純にVal関数を 使用しただけではうまくいかないようです。 上の例で数値変換すると"111"になってしまうようです。 そこで質問なのですが、 何か簡単にできるうまい方法はないでしょうか? 関数があればご教示ください。 以下、Val関数の説明の抜粋です。 解説 文字列中に数字以外の文字が見つかると、Val 関数は読み込みを中止します。円記号 (\) やカンマ (,) など、通常は数値の一部と見なされる記号や文字も、Val 関数は数値として解釈しません。

  • 文字列が数値に変換されない

    文字列の数字をVALUE関数で数値に変換したくても数値になりません。 ♯N/Aと表示されるだけです。 関数を入れたあとに表示形式を数値にしても変わりません。 元の文字列はVLOOKUP関数で検索した数字です。 これができないと仕事が進みません。急いでます。お願いします。

専門家に質問してみよう