代码如下:
$arr = gettimeofday();
$number = ($arr['sec']*100000 + $arr['usec']/10);
$tmp = $number & 0x7FFFFFFF;
$logId = $tmp | 0x80000000;
第一步
$arr['sec'] 自Unix 纪元起的秒数 就是 时间戳
$arr['usec'] 微秒数一般为6位 例如:815896为815毫秒+896微秒
$number 这个值是当前有多少10个微秒
第二步
$number & 0x7FFFFFFF 运算更快
等于
$number % (2 ** 31)
一:
2 ** 31 = 2的31次方
二:
0x7FFFFFFF 十六进制数
对应的十进制 2147483647
对应的二进制 0111 1111 1111 1111 1111 1111 1111 1111
值 2的31次方 -1
第三步
$tmp | 0x80000000
0x80000000 十六进制
对应的十进制 2147483648
对应的二进制 1000 0000 0000 0000 0000 0000 0000 0000
值 2的31次方