用javascript生成GUID的多种算法
全局唯一标识符(GUID,全局唯一标识符)也被称为UUID(通用唯一标识符)。GUID是一个数字标识符是由一个128位的二进制长度算法生成的GUID格式,xxxxxxxx -xxxx-xxxx-xxxx- xxxxxxxxxxxx,其中x是0-9的范围内32位的十六位数或a-f.in理想情况下,任何计算机和计算机集群将不产生两个相同的GUID。
全球总数达到2 ^ 128(3.4 x 10 ^ 38),所以两个相同的GUID随机产生的概率很小,但不是0字GUID有时专指微软的UUID标准。
算法1
复制代码代码如下所示:
功能的UUID(){
var = { };
无功hexdigits =0123456789abcdef ;
对于(var i = 0;i < 36;i + +){
我的{ } = hexdigits.substr(math.floor(Math.random()×0x10),1);
}
的{ 14 } = 4; / /位的0010场time_hi_and_version 12-15
的{ 19 } = hexdigits.substr(0x8(S { 19 } 0x3)|,1); / /位6-7的clock_seq_hi_and_reserved 01
s 8 { 13 { 18 { } 23};
VaR的UUID = s.join();
返回UUID;
}
算法2
复制代码代码如下所示:
函数GUID(){
return' xxxxxxxx -xxxx-4xxx-yxxx- xxxxxxxxxxxx取代( / / XY } { G函数(C){)
VaR R(* 16 | 0)= Math.random,V = C = = 'x':R(r0x3 | 0x8);
返回v.tostring(16);
});
}
算法3
复制代码代码如下所示:
函数GUID(){
函数S4(){
返回(((((( Math.random())* 1 + 0x10000)| 0)。ToString(16)Substring(1);
}
返回(S4)(S4)(+);
}
算法4
复制代码代码如下所示:
功能的UUID(Len,基数){
var字符= '0123456789abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz。分裂();
VaR的UUID = { },我;
基数=基数chars.length | |;
如果(x){
契约形式
为(i = 0;我< len;i++)UUID {我} =字符{ 0(*基})| Math.random;
{人}
/ / rfc4122,版本4的形式
VAR r;
需要这些字符 / / rfc4122
UUID { 8 } { 13 } = = UUID UUID { 18 } = UUID { 23 } = ' ';
UUID { 14 } = 4;
填入随机数据。在i = 19 设置时钟序列的高位作为
/ / rfc4122,秒。4.1.5
对于(i = 0;i < 36;i + +){
如果(!UUID {我}){
R = 0 | Math.random(×16);
UUID {我} =字符{(i = = 19)(R 0x3)| 0x8:R };
}
}
}
返回uuid.join('');
}
这可以指定长度和cardinality.such作为
复制代码代码如下所示:
8 字符ID(基= 2)
UUID(8, 2 / 01001010)
8 字符ID(基= 10)
UUID(8, 10 / 47473046)
8 字符ID(基= 16)
UUID(8, 16) / / 098f4d35