ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript_javascript スキルを使用して GUID を生成するためのさまざまなアルゴリズムの概要

JavaScript_javascript スキルを使用して GUID を生成するためのさまざまなアルゴリズムの概要

WBOY
WBOYオリジナル
2016-05-16 17:25:08756ブラウズ

グローバル一意識別子(GUID、Globally Unique Identifier)は、UUID(Universally Unique IDentifier)とも呼ばれます。

GUID は、バイナリ長 128 ビットのアルゴリズムで生成された数値識別子です。 GUID の形式は「xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx」です。ここで、x は 0 ~ 9 または a ~ f の範囲の 32 桁の 16 進数です。理想的な世界では、2 つのコンピューターまたはコンピューターのクラスターが同じ GUID を生成することはありません。

GUID の総数は 2^128 (3.4×10^38) に達するため、2 つの同一の GUID がランダムに生成される可能性は非常に低いですが、0 ではありません。 GUID という用語は、特に Microsoft による UUID 標準の実装を指す場合があります。


アルゴリズム 1

コードをコピー コードは次のとおりです:

function uuid() {
var s = [];
var hexDigits = "0123456789abcdef";
for (var i = 0; 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) // 01
s[8] = s[13] に予約されたクロック seq_hi_and_7 のビット 6 ~ 7 = 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);
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 form
var r;

// rfc4122 には次の文字が必要です
uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
uuid[14] = '4';

// i==19 でクロック シーケンスの上位ビットを
// rfc4122、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 (base =16)
uuid(8, 16) // "098F4D35"


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。