`
zhouyrt
  • 浏览: 1162066 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JavaScript生成GUID的算法

 
阅读更多

全局唯一标识符(GUID,Globally Unique Identifier)也称作 UUID(Universally Unique IDentifier) 。

GUID是一种由算法生成的二进制长度为128位的数字标识符。GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中的 x 是 0-9 或 a-f 范围内的一个32位十六进制数。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。

GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。GUID一词有时也专指微软对UUID标准的实现。

 

算法1

function uuid() {
    var s = [];
    var hexDigits = "0123456789abcdef";
    for (var i = 0; i < 36; i++) {
        s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
    }
    s[14] = "4";  // bits 12-15 of the time_hi_and_version field to 0010
    s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);  // bits 6-7 of the clock_seq_hi_and_reserved to 01
    s[8] = s[13] = s[18] = s[23] = "-";
 
    var uuid = s.join("");
    return uuid;
}

 

算法2

function guid() {
    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
        var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
        return v.toString(16);
    });
}

 

算法3

function guid() {
    function S4() {
       return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
    }
    return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}

 

算法4

function uuid(len, radix) {
    var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
    var uuid = [], i;
    radix = radix || chars.length;
 
    if (len) {
      // Compact form
      for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random()*radix];
    } else {
      // rfc4122, version 4 form
      var r;
 
      // rfc4122 requires these characters
      uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
      uuid[14] = '4';
 
      // Fill in random data.  At i==19 set the high bits of clock sequence as
      // per rfc4122, sec. 4.1.5
      for (i = 0; i < 36; i++) {
        if (!uuid[i]) {
          r = 0 | Math.random()*16;
          uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
        }
      }
    }
 
    return uuid.join('');
}

 

这个可以指定长度和基数。比如

// 8 character ID (base=2)
uuid(8, 2)  //  "01001010"
// 8 character ID (base=10)
uuid(8, 10) // "47473046"
// 8 character ID (base=16)
uuid(8, 16) // "098F4D35"

 

相关:

http://www.broofa.com/2008/09/javascript-uuid-function/

http://note19.com/2007/05/27/javascript-guid-generator/

http://www.ietf.org/rfc/rfc4122.txt

http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/873856#873856

分享到:
评论

相关推荐

    js生成Guid序列号

    以上就是JavaScript生成Guid序列号的几种方法。在选择方法时,应考虑项目的需求,如是否需要高性能、高安全性或者跨平台兼容性。在JavaScript环境中,Guid常用于创建唯一的ID,如数据库记录、会话标识或临时文件名。...

    JavaScript生成GUID的多种算法小结

    ### JavaScript生成GUID的多种算法详解 #### 一、概述 全局唯一标识符(Global Unique Identifier,简称GUID)或称为通用唯一标识符(Universally Unique Identifier,简称UUID),是一种由算法生成的二进制长度为...

    如何生成guid

    生成GUID的方法有很多种,通常包括编程语言内置的库函数或第三方工具。以下是一些常见编程语言生成GUID的实例: 1. **C#**: 在C#中,可以使用`System.Guid`类的静态方法`NewGuid()`来生成新的GUID: ```csharp ...

    原生JavaScript生成GUID的实现示例

    在JavaScript中生成GUID(全局唯一标识符)是前端开发者偶尔会遇到的需求,尤其是在需要与后端数据保持一致或者创建唯一标识的时候。虽然JavaScript本身并不直接支持GUID生成,但可以通过一些算法来模拟实现。以下是...

    JavaScript实现生成GUID(全局统一标识符)

    通常平台会提供生成GUID的API。生成算法很有意思,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。GUID的唯一缺陷在于生成的结果串会比较大。  GUID的格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ...

    前端开源库-guid

    6. **性能优化**:为了满足高性能应用的需求,`guid` 库可能会采用高效的算法来生成 GUID,同时在验证时避免不必要的计算,提高代码执行效率。 在 `guid-master` 这个压缩包中,我们通常会找到 `guid` 库的源代码、...

    获取Guid唯一码

    在.NET环境下,我们可以使用`System.Guid`类来生成Guid。生成新的Guid实例最简单的方法是使用`NewGuid()`静态方法。例如: ```csharp Guid guid = Guid.NewGuid(); ``` 2. Java: 在Java中,没有内置的Guid类,但...

    Javascript生成全局唯一标识符(GUID,UUID)的方法

    GUID是一种由算法生成的二进制长度为128位的数字标识符。GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中的 x 是 0-9 或 a-f 范围内的一个32位十六进制数。在理想情况下,任何计算机和计算机集群都...

    Js Snowflake(雪花算法)生成随机ID的实现方法

    Js Snowflake算法,也称为雪花算法,是一种分布式系统中用于生成全局唯一ID的算法。该算法由Twitter开源,其生成的ID由64位的二进制数字组成,分为以下几个部分: 1. **时间戳**(41位):从指定的起始时间(例如...

    全局唯一ID生成

    在分布式ID生成的项目中,"src"目录下可能包含了实现各种ID生成算法的Java代码,而"WebContent"则可能包含展示或测试这些ID生成服务的前端页面。 总的来说,全局唯一ID生成是分布式系统设计中的核心问题之一,涉及...

    Guid Generator-crx插件

    这类程序通常提供额外的功能,如增强浏览体验、优化性能或提供特定工具,如这个Guid Generator,它就是一个工具型扩展,帮助用户生成GUID。 **压缩包子文件的文件名称列表详解:** "Guid_Generator.crx"是这个插件...

    JS实现的生成随机数的4个函数分享

    第三种方法同样是生成GUID,但采用了循环和条件判断的方式,逐个生成每个部分的16进制数字,并在特定位置插入破折号。 第四种方法提供了一个更灵活的随机字符串生成器,它允许生成包含数字和字母的字符串。此方法...

    javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法

    针对这一问题,文章中提出了使用JavaScript生成随机GUID(全局唯一标识符)作为新窗口名的解决思路。GUID是一种采用特定算法生成的唯一标识符,通过在window.open的第二个参数中引入这种随机生成的标识符,可以确保...

    基于用户行为的数据分析与挖掘

    - **Guid算法**: 为了确保用户标识的独特性和持久性,推荐使用Guid算法生成用户的唯一ID。这种方法可以避免由于Cookie被清除而导致的用户身份丢失问题。 ##### 2.2 流量来源分析 - **流量来源分类**: 用户流量可以...

    uuid 资料包

    3. **Version 3 UUID**:基于命名空间和MD5散列算法生成。给定一个命名空间和一个名字,每次输入相同的参数都会生成相同的UUID,但不同参数会生成不同的UUID,这种方式确保了可预测性。 4. **Version 4 UUID**:...

Global site tag (gtag.js) - Google Analytics