Как мне генерировать последовательности символов, такие как шестнадцатеричные с другой базой? - PullRequest
3 голосов
/ 15 мая 2009

У меня есть следующий скрипт Perl, который генерирует строку на основе числа:

my @chars;
push @chars, map(chr, 48..57), map(chr, 97..122);
my $c = $#chars+1;

for (0..50) {
    my $string;
    my $l = $_ / $c;
    my $i = int $l;
    my $r = ($l - $i) * $c;
    $string .= $chars[$r];
    while ($i > 0) {
        $l = $i / $c;
        $i = int $l;
        $r = ($l - $i) * $c;
        $string .= $chars[$r];
    }
    print "$string\n";
}

Когда я запускаю это, я получаю следующий вывод:

0
1
2
3
4
...
z
01
01
21
21
41
41
61
61
81
91
91
b1
b1
d1
d1

Чего мне не хватает? Благодарю за любую помощь!

Ответы [ 2 ]

3 голосов
/ 15 мая 2009

Попробуйте вместо этого, он немного понятнее, чем у сценария, и правильно преобразует в произвольную базу:

my @chars;
push @chars, map(chr, 48..57), map(chr, 97..122);

my $base = @chars;

for my $num (0..100) {
    my $string = '';

    while ($num >= $base) {
        my $r = $num % $base;
        $string .= $chars[$r];

        $num = int($num / $base);
    }
    $string .= $chars[$num];
    print reverse($string) . "\n";
}
1 голос
/ 15 мая 2009
...