robertboeser/robo-id

v1.1.2 2023-10-01 09:50 UTC

This package is auto-updated.

Last update: 2024-09-30 01:52:14 UTC


README

格式

RoboID 有两部分,一部分是基于时间的(T)和一部分是随机的(R)。基于时间的一部分基于 Unix 时间戳,由 45 位组成。随机部分由 30 位(短版本)或 80 位(长版本)组成。

长版本将与 uuid 兼容。这意味着在随机部分,位 0-3(uuid 版本)设置为 'B',位 16-17(uuid 变体)设置为 10b。

有三种不同的字符串表示形式,以及一种 json 表示形式。每个实现都必须接受并导出 json 表示形式。

十六进制

S: TTTTTTTTTTTT-RRRRRRRR L: TTTTTTTTTTTT-RRRRRRRRRRRRRRRRRRRR X: TTTTTTTTTTTT-RRRRRRRRRRRRRRRRRRRR-XXXXXXXXXXXXXXXX 时间的部分使用零左填充到 48 位。随机部分使用零右填充到 32 或 80 位。

Base32

S: TTTTTTTTT-RRRRRR L: TTTTTTTTT-RRRRRRRRRRRRRRRR X: TTTTTTTTT-RRRRRRRRRRRRRRRR-XXXXXXXXXXXXXXXX 基于时间的部分和随机部分使用 base32 crockford 字符集编码。使用这种表示形式不需要填充。

UUID

AAAAAAAA-BBBB-VCCC-WDDD-EEEEEEEEEEEE A 和 B 一起构成基于时间的部分。基于时间的部分使用 100b 左填充到 48 位。这确保了 ID 以不同于 '0' 的字符开始。V 被硬编码为 'B'。在长版本中,C 到 E 一起构成随机部分。在短版本中,C 和 D 被填充为零。随机部分在 E 中编码,并使用零右填充。

JSON

{ "v": "S|L|X", // 版本 "t": "基于时间的部分", // 十六进制编码 "r": "随机部分", // 十六进制编码 "x": "扩展部分" // 十六进制编码 }