如何产生这样的十六进制字符序列与不同的基地?
题
我有以下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
我在想什么?感谢您的帮助!
解决方案
试试这个,它比你有更清晰的脚本一点,适当地转换成任意的基础:
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";
}
不隶属于 StackOverflow