mbethke,
Very nice. I had to slightly modify it in order to get the sort order I wanted:
my @c3 = map { my $c = $_; (map { "$c$_" } @c1) } @c1;
sub myFromB37 {
my $n = shift;
my $s = ' ';
substr( $s, 4, 2, $c3[$n % 1369] );
$n /= 1369;
substr( $s, 2, 2, $c3[$n % 1369] );
$n /= 1369;
substr( $s, 0, 2, $c3[$n] );
$s;
}
my @c4;
$c4[unpack 'S', $c3[$_]] = $_ foreach 0 .. 1368;
sub myToB37 {
1874161 * $c4[unpack 'S', substr($_[0], 0, 2)] +
1369 * $c4[unpack 'S', substr($_[0], 2, 2)] +
$c4[unpack 'S', substr($_[0], 4, 2)];
}
If you have time, I would really appreciate an in-depth explanation.