1

次のような長い整数があります: 5291658276538691055

この数字をプログラムで 4 ~ 6 の大文字のみに変換するにはどうすればよいでしょうか。これは、数字に戻すために逆にすることもできる一意の組み合わせです。

たとえば、OBJ-C を使用します。

4

2 に答える 2

3

26 個の大文字があります。

それらの 6 は 26 ^ 6 の数字 (308915776) を表すことができます。

いいえ。より大きな範囲の数値をより小さな範囲にマップしようとしています。元に戻すことはできません。

また、log 5291658276538691055 / log 26は 14 未満なので、14 文字が適している場合は、数値を 26 ベースに変換し、数字を文字にマップします。

もう 1 つ、数値の範囲が十分に小さい場合は、数値を操作して (最小値を減算するなど)、エンコードすることで、桁数を減らすことができます。

于 2013-05-25T18:12:47.537 に答える
1

数値を Base 26 に変換する必要があります (16 進数 - きびきびした名前!)

Hexavigesimal に関するウィキペディアの記事では、Java のコード例を示しています。これは非常に簡単に適応できるはずです。

注意:変換アルゴリズムのみを使用して、言及した4〜6個の大文字までの長い数字を取得することはできません(Base 26の例はBCKSATKEEBRYBXJです)。短い変換が必要な場合は、次の 2 つのオプションしかありません。

  • ルックアップ テーブル (5291658276538691055 = ABCDEF などのストア マッピング)。明らかに、離散的な数値のセットがある場合にのみ役立ちます。
  • 追加の文字を含む (例: 小文字 + 数字)。
于 2013-05-25T18:14:36.747 に答える