2

1 から 6000000 までの数字を ABCDE のような文字の組み合わせに変換する必要があります。文字数は少ない方が良いです。でも4~5個は必要だと思います。

数字を文字に変換して元に戻すアルゴリズムを作成する方法として、誰かが私を正しい方向に向けることができますか? AZのみ。(大文字)。

4

5 に答える 5

11

base-26 の番号付けに変換する必要があります: 0 は A、1 は B、25 は Z、26 は BA などです。

ウィキペディアのHexavigesimal の記事には、基数 26 に変換するためのコードがあります。

于 2011-07-22T14:50:07.313 に答える
5

アルファベットは26文字あります。

Tあなたは 26^4 < 6 000 000 と 26^5 > 6 000 000 を持っています

次に、ほとんどの要素に対して5文字が必要になります

あとは、基数 26 で数字を表現するだけです。

次のように、0 ... 6 000 000 に X を書き込む方法は 1 つだけです。

X = a4*26^4 + a3*26^3+ a2*26^2+ a1*26^1+a0

ai in {0,...25} then you just map ai with a letter from A to Z
于 2011-07-22T14:51:10.663 に答える
4

最も素朴なことは、数値をA,B,...,Z表現させ、数値0,1,...,25を基数 26 に変換してアルファベット変換を取得することです。

たとえば、この投稿に対するこの回答には C# の実装があります。

于 2011-07-22T14:50:11.190 に答える
1

10進数表現から変換する場合は、10桁の[0-9]があり、結果に10進数ごとに1文字を含める場合は、10個の英字が必要になります。ただし、バイナリ表現から変換する場合は、すべての0を「A」に置き換え、すべての1を「B」に置き換えてください...

すべてはあなたがそれをどのようにやりたいかによって異なります...あなたが使用することに決めたベースはあなたが必要とする文字の数を決定します。

例として、2進表現からそれを行うには、数値mod 2を取ります。結果が0の場合、その1の場合は「A」を追加します。「B」を追加します。数値を2で除算します(または1桁右シフトします)。 )数がゼロになるまで繰り返します。

  start with value of  57  
 1.  57 Mod 2 = 1    A
 2.  57 / 2 = 28
 3.  28  Mod 2 = 0   BA
 4.  28 / 2 = 14
 5.  14 mod 2 = 0    BBA
 6.  14 / 2 = 7
 7.   7 mod 2 = 1    ABBA   --- A musical group !
 8.   7 / 2 = 3
 9.   3 mod 2 = 1    AABBA
10.   3/ 2 = 1
11.   1 mod 2 = 1    AAABBA
12.   1 / 2 = 0    --- -done  
于 2011-07-22T14:59:30.020 に答える
0

A = 0、B = 1 などを Z = 25 まで等しくする必要があります。

これは、基数 (または基数) 26 の数値システムになります。

これを念頭に置いて、2 桁で 0 ~ 675 (ZZ = 675) の範囲の数値を表すことができます。3 桁は 26^3 を表します。つまり、0 ~ 17575 です。

0 ~ 11881375 (ZZZZZZ) を 5 桁で表すことができます。

これを行うには、10 進数を独自の基数に変換する標準アルゴリズムを使用できます。 基数間の変換を参考にしてください。

于 2011-07-22T14:57:20.033 に答える