Home >Web Front-end >JS Tutorial >Summary of various algorithms for generating GUID using JavaScript_javascript skills

Summary of various algorithms for generating GUID using JavaScript_javascript skills

WBOY
WBOYOriginal
2016-05-16 17:25:08826browse

Globally unique identifier (GUID, Globally Unique Identifier) ​​is also called UUID (Universally Unique IDentifier).

GUID is an algorithmically generated numeric identifier with a binary length of 128 bits. The format of the GUID is "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", where x is a 32-digit hexadecimal number in the range of 0-9 or a-f. In an ideal world, no two computers or clusters of computers will generate the same GUID.

The total number of GUIDs reaches 2^128 (3.4×10^38), so the possibility of randomly generating two identical GUIDs is very small, but it is not 0. The term GUID sometimes refers specifically to Microsoft's implementation of the UUID standard.


Algorithm 1

Copy code The code is as follows:

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;
}

Algorithm 2

Copy code The code is as follows:

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);



Copy code

The code is as follows:function guid() { function S4() { return (((1 Math.random())*0x10000)|0).toString(16).substring(1); }
return (S4() S4() "-" S4() "-" S4() "-" S4() "-" S4() S4() S4());
}


Algorithm 4



Copy code

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('');
}


This can specify the length and base. For example,



Copy code

The code is as follows:// 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"


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn