uniqid()
函数返回一个 13 位长的十六进制数。根据php.net site 中的规范,该函数用于microtime
生成唯一值。
但microtime
以字符串格式返回数字,如下所示:
"0.70352700 12689396875"
这基本上是自 1970 年以来经过的微秒和秒数。这是一个 9+11 位的十进制数。
将 20 位十进制数字转换为十六进制将导致16 位十六进制而不是 13 位数字。
我也想过要去掉“0”。似乎永远不会改变的部分,以及似乎始终保持“00”的微秒部分的最后两位数字。这样做,十进制数只有 9+11-3 位长,但仍然是 17 位的十进制数在转换为十六进制时会导致 14 位十六进制数不是 13。
我对以其他方式获得唯一 ID 或更长/更短的唯一 ID 不感兴趣!我只问是否有人知道为什么 uniqid 只返回 13 位数字。
这似乎是胡说八道:如果uniqid
返回比 少一位microtime
,这意味着microtime
给出的结果比 .返回的结果更独特uniqid
。