GenerateGUID [生成GUID、UUID]
# 介绍
通用唯一识别码(英语:Universally Unique Identifier,缩写:UUID)是用于计算机体系中以识别信息的一个 128 位标识符。
根据标准方法生成,不依赖中央机构的注册和分配,UUID 具有唯一性,这与其他大多数编号方案不同。重复 UUID 码概率接近零,可以忽略不计。
# GUID 和 UUID de 区别
把它们当作一个 16 字节(128 位)的值,作为一个唯一的值使用。在微软的说法中,它们被称为 GUID,但在不使用微软的说法时,就叫它们 UUID。甚至 UUID 规范的作者和微软都声称它们是同义词。参考:Is there any difference between a GUID and a UUID? - Stack Overflow (opens new window)。
# 实现
# JavaScript
/*
Generates a UUID/GUID in Node.Js.
The script uses `Math.random` in combination with the timestamp for better randomness.
The function generate an RFC4122 (https://www.ietf.org/rfc/rfc4122.txt) version 4 UUID/GUID
*/
const Guid = () => {
const pattern = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'
let currentDateMilliseconds = new Date().getTime()
return pattern.replace(/[xy]/g, currentChar => {
const randomChar = (currentDateMilliseconds + Math.random() * 16) % 16 | 0
currentDateMilliseconds = Math.floor(currentDateMilliseconds / 16)
return (currentChar === 'x' ? randomChar : (randomChar & 0x7 | 0x8)).toString(16)
})
}
// > Guid()
// 'edc848db-3478-1760-8b55-7986003d895f'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| 0
向下取整(负数则向上取整),相当于~~n
或者Math.foloor(n)
。
# 参考
编辑 (opens new window)
上次更新: 2022/10/20, 20:45:42