yoshiweb.NET

Number.toString( radix )のワナ

前回のエントリーで parseInt() について調べているときにヘルプに 36進数まで対応しているようなことがあった。
解析する数値の基数を表す整数。有効な値は、2 ~ 36 です。

数字とアルファベット 10文字 + 26文字で 36進数 だから、parseInt()の第2引数に 36 を指定すれば 数字 + アルファベットの文字列は数字に変換できるのか?ということで試してみた。


trace( parseInt("adobe", 36) ); // 17434202 ← キター
trace( parseInt("flash", 36) ); // 26188001 ← キター
trace( parseInt("yoshiweb", 36) ); // 2718346843523 ← キター


Number クラスの toString() メソッドで引数に数字を入れると数値を文字列に変換できるから文字列に復元してみようと試してみた。

trace( (255).toString(16) ); // ff ← 255 を 16進数で変換するとこうなる。
trace( (35).toString(36) ); // z ← 36進数で最後は z だからこれもOK!



では復元開始!!

アルファベット → 数字 → アルファベット(復元)

trace( (17434202).toString(36) ); // adobe ← キター
trace( (26188001).toString(36) ); // flash ← キター
trace( (2718346843523).toString(36) ); // -62rtz1 ← yoshiweb じゃない!?(´゚д゚`)

Flash に理解してもらえませんでした...orz


んで地味に調べてみたら 599147937791 までは正常に文字列に変換できて、それ以降は - (ハイフン)がついたり改行したりなんか変です。

trace( (17434202).toString(36) ); // adobe
trace( (26188001).toString(36) ); // flash
trace( (599147937791).toString(36)); // zik0zj
trace( (599147937792).toString(36)); // -(改行)(スペース)(スペース)0(改行)(スペース)
trace( (599147937793).toString(36)); // -zik0zj


ヘルプには書いてないけど上限があるんだらろうか...。
OS や Flash Player のバージョンによっても違いはあるのかな?

投稿日 : 2007年04月22日 - yoshiweb - カテゴリ: Flash

コメント

投稿者 : cialis prices

Hi there, I would like to subscribe for this webpage to take newest
updates, therefore where can i do it please help out.
2024年01月08日 09時02分41秒