Aktualizacja:Konwersja Ilość STRING (Kodowanie Dostarczany) JavaScript
Poniższy kod działa doskonale aż $ char.to_text napotyka liczbą całkowitą większą niż 55,834,574,847.
alpha="abcdefghijklmnopqrstuvwxyz";
$char={
to_num:function(s,c){
var l=c.length,o={};
c.split('').forEach(function(a,i){
o[a]=i
});
return s.split('').reduce(function(r,a){
return r*l+o[a]
},0)
},
to_text:function(i,c){
var l=c.length,s='';
do{
s=c[i%l]+s; // i%l
i/=l;
i|=0
}while(i!==0);
return s
}
};
Oto krótki wycinek:
$char.to_num("military",alpha) => 98987733674
$char.to_text(98987733674,alpha) => "undefinedundefinedundefinedundefinedundefinedundefinedundefinedy"
Ręcznie iteracji powyższy kod powinien generować normalną odpowiedź, dlaczego to wydajność tego „niezdefiniowanej ...” ciąg, jest to po prostu dlatego, że jest to duża liczba operacji dla JS?
Wiesz, mogłeś po prostu stosować 'parseInt (a, 27)' ... – Bergi
@Bergi, nie bardzo, co można uzyskać 1 ... 9, jak również. to wymagałoby pewnych zmian. –
@NinaScholz: OK, po którym następuje 'replace' ... Ale biorąc pod uwagę, że w jego zestawie znaków znajduje się' 0', nie sądzę, aby liczba 1-9 miała znaczenie. – Bergi