-2

010102進数、8進数01122、10進数の整数1234、16進数以外に、新しい数値形式を作成する方法を知っ0xFFている人はいますか?たとえば、範囲は-から-です。私はパスワードジェネレータを構築するつもりなので、誰かがそれに役立つかもしれない何かを置くことができれば非常に役に立ちます。0x11AEGH09AH

まず、これができる機能はありますか?0x11AEGH基本的に、2進数、8進数、整数などに変換したい...

4

2 に答える 2

3

N 進法で数値をフォーマットするには、アルファベットと、整数除算 + 剰余の結果を取得する機能の 2 つが必要です。

ラテン アルファベットを使用して base-26 システムで数値をフォーマットすることを検討してください。R26 で割った余りを繰り返し取得し、文字番号を選択Rして、書式設定する数値の前に追加します。数値を 26 で整数分割し、アルゴリズムの次のステップで使用します。ゼロになったらストップ。

たとえば1234、base-26 で印刷する場合は、次のようにできます。

  • 1234 % 26 は 12Mです。1234/26 は 47
  • 47 % 26 は 21Vです。47 / 26 は 1
  • 1 % 26 は 1 ですB。1 / 26 はゼロです。止まる。

したがって1234、base-26 はBVMです。

逆に変換するには、次のように、先頭から始めて、指定された「ゼロ」(A上記の例の場合) を各桁から順番に減算します。

  • B-Aは 1 です。結果は1
  • V-Aは 21 です。結果は 1*26+21、つまり 47 です。
  • M-Aは 12 です。結果は 47*26+12、つまり 1234 です。
于 2013-02-12T01:55:35.567 に答える
0

おそらく、Long.parseLong(文字列表現、int radix) のような関数を Javaと同じように使用できLong.toString(long value, int radix)ます。他の言語にも同様の機能がある場合があります。

このアプローチでは、可能な最大基数 (基数) が制限され、異なる数字を表す文字を制御することはできません (英数字が使用されます)。ただし、追加のコーディングなしですぐに使用できるソリューションです。

于 2013-02-12T08:17:02.380 に答える