Pourquoi la fonction uniqid des PHP renvoie-t-elle seulement 13 chiffres et pas 14?

uniqid() fonction renvoie un 13 chiffres nombre hexadécimal. Selon le spec dans php.net sitela fonction utilise microtime à générer de la valeur unique.

Mais microtime renvoie des nombres dans un format de chaîne comme la suivante:

"0.70352700 12689396875"

qui sont essentiellement les microsecondes et les secondes écoulées depuis 1970.
C'est un 9+11 chiffres nombre décimal.

De la conversion d'un 20 nombre décimal en hexadécimal le résultat serait une 16 chiffres hexadécimaux PAS un 13 chiffres.

J'ai aussi pensé à prendre la "0." la partie qui semblent ne jamais changer, et les deux derniers chiffres de l'microsec partie qui semblent rester toujours "00". Le nombre décimal serait seulement 9+11-3 chiffres, mais encore un nombre décimal de 17 chiffres, convertie en hexadécimal le résultat serait de 14 chiffres nombre hexadécimal PAS 13.

JE NE SUIS PAS INTÉRESSÉ À OBTENIR UN ID UNIQUE PAR UN AUTRE MOYEN OU UN PLUS LONG/COURT D'ID UNIQUE! Je SUIS le SEUL à vous DEMANDER SI QUELQU'un SAIT POURQUOI uniqid RETOURNE UNIQUEMENT les 13 CHIFFRES.

Il semble nosense: si uniqid retourne un chiffre inférieur à microtimecela signifie que microtime donne des résultats plus unique de ceux retournés par uniqid.

source d'informationauteur Marco Demaio