如何生成具有不同基数的字符序列(例如十六进制)?

发布于 2024-07-20 02:04:08 字数 560 浏览 12 评论 0原文

我有以下 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

我缺少什么? 感谢您的帮助!

I have the following Perl script that generates a string based on a number:

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";
}

When I run this I get the following output:

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

What am I missing? Thankful for any help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜中书 2024-07-27 02:04:08

试试这个,它比您拥有的脚本更清晰一点,并且可以正确转换为任意基数:

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";
}

Try this instead, it's a little clearer than the script you have and properly converts to an arbitrary base:

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";
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文