PHP ソース コード関数 uniqid() には、次の C コードがあります: (短縮するためにいくつかの型を削除しました)
//...
struct timeval tv;
gettimeofday(&tv, NULL);
int sec = (int) tv.tv_sec;
int usec = (int) (tv.tv_usec % 0x100000);
// The max value usec can have is 0xF423F,
// so we use only five hex digits for usecs.
printf("%08x%05x", sec, usec);
//...
批判はさておき、彼らは 64 ビットのタイムスタンプを生成しようとしています。
0xF423FはおそらくCLOCKS_PER_SEC - 1 (CLOCKS_PER_SEC は 10 進数の 1000000) です。
しかし、この0x100000はどこから来て、ビットごとの代わりにモジュラスを使用する理由は何ですか?