- ベストアンサー
hexdec(uniqid())でE+15が付く
こんばんは PHPで echo hexdec(uniqid()); とすると、10進数らしき数字の羅列の最後にE+15が必ず付きます。 何度やってもかわりません。uniqidは16進数を返すはずなのでこの挙動がどういうことなのかわかりません。 ご存じの方教えてください。 PHP 5.4.3
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
uniqid() はデフォルトでは13文字の16進で返りますが、hexdecで10進数に変換すると 整数型の範囲を超えた大きな値になります。 PHPでは、整数型の範囲を超える数値は浮動小数点型に型変換されます。 そのために指数表示になっているだけです。
その他の回答 (1)
noname#244856
回答No.1
「数値」と「数値文字列」をちゃんと区別してください。 【数値】 10進表記: 11 8新表記: 013 16進数表記: B これらは全て整数の 11 として扱われます。全部10進数の扱いになるということです。 【文字列】 10進表記: "11" 8新表記: "013" 16進数表記: "B" これらはそれぞれ別の文字列として扱われます。 単に16進数表記の乱数値を取りたいだけなら md5(mt_rand()) とかでいいと思いますよ。