I sent these to Dave yesterday but I haven't heard any feedback yet.
I've done a small amount of testing with these and they seem to work
just fine.  If you find a bug in these, please let me know.

This code uses "bigint" because, after all, we're dealing with
integers.

--kevin
-- 
GnuPG ID: B280F24E                     And the madness of the crowd
alumni.unh.edu!kdc                     Is an epileptic fit
                                       -- Tom Waits


#!/usr/bin/perl

# read a decimal integer from STDIN and return its value, in base 95, on stdout
# this uses the printable ASCII characters, in order, as the digits of base 95
# input and output are both MSDF

use bigint;

$line = <>;
$line =~ /^([0-9]+)/;
$dec = $1 +0;

$epsilon = 1;
$base = 95;
while ($dec > $epsilon) {
 $digit = $dec % $base;
 $newdec = $dec / $base;
 $dec = $newdec;
 $result = chr($digit + 32) . "$result";
}

print "$result\n";
#!/usr/bin/perl

# read a decimal integer from STDIN and return its value, in base 95, on stdout
# this uses the printable ASCII characters, in order, as the digits of base 95
# input and output are both MSDF

use bigint;

$b95 = <>; chomp($b95);

map { $dec *= 95; $dec += (ord($_) - 32); } split(//, $b95);

print $dec, "\n";
exit;

Reply via email to