工具介绍
UUID 是 128 位的标识,常写成 8-4-4-4-12 的十六进制。这个页面一次可以生成多条,用来填测试数据或做临时主键。v4 来自浏览器的随机数。不要把页面上的 v1 选项当成 RFC 4122 的时间戳 UUID。
v4 优先调用 crypto.randomUUID()。标准写法里,第三段的第一个十六进制字符是版本号 4,第四段的第一个字符是 8、9、a 或 b。勾选去掉连字符、转大写、加花括号时,页面在生成之后做这三步字符串处理。v1 选项只是把 Date.now() 拆进前三段并在开头标上版本位 1,时钟序列和节点都是另外的随机字节,布局也不符合 RFC 4122,不能按时间排序,也不能和别的系统的 v1 互认。
计算示例
输入:对 550e8400-e29b-41d4-a716-446655440000 依次去掉连字符、转大写、加花括号
输出:{550E8400E29B41D4A716446655440000}。第三段的 4 表示这一条是版本 4
输入:版本选 v4,数量 1,保留连字符,小写,不要花括号
输出:一条新的 8-4-4-4-12 小写 UUID。每次点击都不同,不能期望得到上一条示例里的那个固定值
输入:版本选 v1
输出:第一段以 1 开头的十六进制,后面夹着当前毫秒时间的片段和随机字节。这不是可移植的标准 v1
使用限制
- v4 的具体文本无法事先写死,只能保证格式和版本位。碰撞在实际数量下可以忽略,但页面没有去重。
- 数量很大时会在主线程里循环生成,浏览器可能短暂卡住。
- 没有名字空间,因此没有 UUID v3 或 v5。
常见错误
- 把 v1 结果交给要求 RFC 4122 版本位位于第三段的系统。这个页面的 v1 把版本字符放在开头。
- 去掉连字符后又按 8-4-4-4-12 去切。存储格式要和读取方约定一致。
- 用生成结果当密码。它的字符集只有十六进制,熵低于同长度的大小写加符号密码。
常见问题
550e8400-e29b-41d4-a716-446655440000 里哪个字符是版本?▾
第三段 41d4 的 4。变体位在下一段 a716 的 a。
花括号是 UUID 的一部分吗?▾
不是。那是一些 Windows API 的写法。勾选后只是在外面加一层 { }。
刷新页面还会看到刚才的结果吗?▾
不会。结果只留在当前页面的内存里,下载文件要自己保存。