I wondered about that myself, at first - but the OP said "001 002...010 011 012..020", suggesting that there were ranges desired between 002 and 010 and between 012 and 020. In base 3, there is nothing in those ranges.
update: just for fun, here's a solution to the base-3 problem. I dispose of the 0 padding in this case, because three places doesn't buy you much in base-3.
use strict;
use warnings;
sub base3
{
my $num = shift;
my @res;
do { unshift @res, ( $num % 3 ) }
while ( $num = int( $num / 3 ) );
return join '', @res;
}
print base3( 65 );
__END__
2102
Obviously in the real world, you would do some input checking, and likely factor out the constant base. It feels like there should be a way to do this with pack... |