Die ganze Prozedur wäre also ein simples
Mapping Deiner Zahl aus dem [0…9]-Raum
in den [0…63]-Raum, also praktisch eine
reine Konvertierung innerhalb von Zahlensystemen.
Da ich gerne programmiere, hab ich das mal
versucht - und ich denke es geht so. Man
korrigiere mich bitte, ich lerne gern dazu
Perl hat ein schönes Modul „Math::BaseArith“,
um zwischen Zahlensystemen umzuwandeln. Die
ganze Umwandlung ist dann hier:
— map16_10.pl —
use strict;
use warnings;
use Math::BaseArith;
my @ascspace = ('A'..'Z', '0'..'9', '-', '\_', 'a'..'z');
my $R = scalar @ascspace; # $R ist Anzahl der ASCII-Zeichen
my @tab = ( ['9768956781', '120789'], # diese Zahlenpaare umwandeln
['6292937814', '574747'],
['0000000001', '000001'],
['9999999999', '999999'] );
for my $ze (@tab) { # über die Tabelle gehen
my $num = $ze-\>[0] . $ze-\>[1]; # aus 10 + 6 wird 16-stell. Zahl
my @parts = $num=~/(.{8})(.{8})/; # diese zerlegt in zwei 8-stell. Z.
my @idx = map { encode $\_, [$R, $R, $R, $R, $R] } @parts; # umwandeln
my $cod = join '', map { $ascspace[$\_] } @idx; # die Indices in die ASCII
print "$ze-\>[0] | $ze-\>[1] ==\> $cod \n"; # Tabelle mappen + ausgeben
}
Hierbei zerlege ich die 16-stellige Zahl
in zwei 8-stellige, da ich die Probleme
mit 64bit-int auf 32bit-Systemen damit
umgehe, die Ausgabe ist:
9768956781 | 120789 ==\> Fodz5Ep2sV
6292937814 | 574747 ==\> DkDb8AraS1
0000000001 | 000001 ==\> AAAAAADoJB
9999999999 | 999999 ==\> Fx4DzFx4Dz
Vielleicht nützt das ja
als Anregung
Grüße
CMБ