次のコードは、55834574847より大きい整数遭遇char.to_text $まで完璧に動作します。 、手動で上記のコードを反復することは正常な応答を生成する必要があります
$char.to_num("military",alpha) => 98987733674
$char.to_text(98987733674,alpha) => "undefinedundefinedundefinedundefinedundefinedundefinedundefinedy"
、なぜそれがこの「未定義の...」の文字列を得ず、それはだから、それは単純である:ここでは
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
}
};
は迅速スニップですJSのための多数の操作?
、あなただけの 'のparseInt使用していたかもしれない(27)' ... – Bergi
@Bergiは、本当に、あなたにも1 ... 9になるだろう。これにはいくらかのシフトが必要です。 –
@ NinaScholz:OK、その後に 'replace'が続きます...しかし、彼が文字セットに' 0'を含んでいれば、1-9は重要ではないと思います。 – Bergi