yoshiweb.NET-blog



HOME > blog > Number.toString( radix )のワナ
« 0から始まる文字列を数値に変換する際の落とし穴 | いまさらながらトゥイッター »

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 のバージョンによっても違いはあるのかな?

投稿者 yoshiweb - Flash - 2007/04/22 - 01:45:14 - Permalink
このエントリーをはてなブックマークに追加
タグ:

Comments

コメントしてください

コメントを書く

※ スパム対策のためコメント内の URL は全角で書いてください。あとで半角に変換します。