-3

関数にインデックスを渡す必要があり、そのインデックスから 1 ~ 4 文字を含む文字列を返します。

私は持っている:

$string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

したがって、index(20) と言うと、関数はより低い "k" を返す必要があります。これは、$string 変数のインデックスであるためです。

しかし...

インデックスを入力すると

62 it should return 10
63 .. 11

これは、インデックス 62 から、文字列を 0 ではなく 1 から開始し、次のインデックスまでループする必要があるため、長さ 2 の文字列になります。

インデックスを入力すると

3843 .. ZZ

これは、インデックス 3843 から [0-9a-zA-Z][0-9a-zA-Z] のすべての可能性が終了し、文字列が 3 の長さで始まるためです。

3844 .. 100

...

9999 .. 2Bh

すべての可能性と [0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z] では、インデックス 9999 までしか必要ありません

4

2 に答える 2

2

あなたの質問は理解するのが少し難しいです。これがあなたが望むものかどうかわかりません:

$string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 

function t($n)
{
    global $string;
    $ret = $string{$n%62};
    if($n>=62)
        $ret = t(floor($n/62)).$ret;
    return $ret;
}

echo t(9999);
于 2012-08-24T11:48:43.047 に答える
0

あなたが求めているのは、基本的には基数 10 (10 進数) の数値から基数 64 への基数コンバーターです (文字列をカウント システムの 64 桁として使用します)。

PHP には組み込みbase_convert()関数が用意されていますが、たとえば 16 進数と 10 進数の間の変換にはうまく機能しますが、このような非常に高い基数では機能しません。これは、一部には、一般に誰もそれらを必要としないためであり、一部には、そのような基数の数字が合意された標準ではないためです.

base_convert()上にリンクされたページのコメントには、高いベースで機能する関数を作成した例がいくつかあります。しかし、私はそれらのいずれかを保証することはできません.

于 2012-08-24T12:10:45.323 に答える