>웹 프론트엔드 >JS 튜토리얼 >JavaScript_javascript 기술을 사용하여 GUID를 생성하기 위한 다양한 알고리즘 요약

JavaScript_javascript 기술을 사용하여 GUID를 생성하기 위한 다양한 알고리즘 요약

WBOY
WBOY원래의
2016-05-16 17:25:08826검색

전역 고유 식별자(GUID, Globally Unique Identifier)는 UUID(Universally Unique IDentifier)라고도 합니다.

GUID는 알고리즘을 통해 생성된 숫자 식별자로, 이진수 길이는 128비트입니다. GUID의 형식은 "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"입니다. 여기서 x는 0-9 또는 a-f 범위의 32자리 16진수입니다. 이상적인 세계에서는 두 대의 컴퓨터 또는 컴퓨터 클러스터가 동일한 GUID를 생성하지 않습니다.

총 GUID 개수는 2^128(3.4×10^38)에 이르므로 동일한 두 개의 GUID가 무작위로 생성될 가능성은 매우 작지만 0은 아닙니다. GUID라는 용어는 때때로 Microsoft의 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"; // time_hi_and_version 필드의 비트 12-15 0010
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // clock_seq_hi_and_reserved의 비트 6-7은 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)
}

>

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 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnop qrstuvwxyz'.split('');
var uuid = [], i;
radix = radix || chars.length;

if (len) {
// 압축 형식
for (i = 0; i } else {
} // rfc4122, 버전 4 형식
var r;

// rfc4122에는 다음 문자가 필요합니다.
uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
uuid[14] = '4';

// i==19에서 클럭 시퀀스의 상위 비트를 다음과 같이 설정합니다.
// 4.1. 5
for (i = 0; i if (!uuid[i]) {
r = 0 | Math.random()*16;
uuid[ i] = chars[(i = = 19) ? (r & 0x3) | 0x8 : r];
}
}
}

return uuid.join('');
}


길이와 밑변을 지정할 수 있습니다. 예를 들어


// 8자리 ID( base=2)
uuid(8, 2) // "01001010"
// 8자리 ID (base=10)
uuid(8, 10) // "47473046"
// 8자 ID (기본 =16)
uuid(8, 16) // "098F4D35"


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.