Javascript를 통한 UUID 생성(v4)
22186 단어 JavaScripttech
직접 하는 것도 간단하니까 실제로 자바스크립트로도 써봤어요.
실제로 해 보다
그 1
class UUID {
static #uuidIte = ( function* () {
const HEXOCTETS = Object.freeze( [ ...Array( 0x100 ) ].map( ( e, i ) => i.toString( 0x10 ).padStart( 2, "0" ).toUpperCase() ) );
const VARSION = 0x40;
const VARIANT = 0x80;
for (;;) {
const bytes = crypto.getRandomValues( new Uint8Array( 16 ) );
yield "" +
HEXOCTETS[ bytes[ 0 ] ] +
HEXOCTETS[ bytes[ 1 ] ] +
HEXOCTETS[ bytes[ 2 ] ] +
HEXOCTETS[ bytes[ 3 ] ] + "-" +
HEXOCTETS[ bytes[ 4 ] ] +
HEXOCTETS[ bytes[ 5 ] ] + "-" +
HEXOCTETS[ bytes[ 6 ] & 0x0f | VARSION ] +
HEXOCTETS[ bytes[ 7 ] ] + "-" +
HEXOCTETS[ bytes[ 8 ] & 0x3f | VARIANT ] +
HEXOCTETS[ bytes[ 9 ] ] + "-" +
HEXOCTETS[ bytes[ 10 ] ] +
HEXOCTETS[ bytes[ 11 ] ] +
HEXOCTETS[ bytes[ 12 ] ] +
HEXOCTETS[ bytes[ 13 ] ] +
HEXOCTETS[ bytes[ 14 ] ] +
HEXOCTETS[ bytes[ 15 ] ];
}
} )();
static randomUUID() {
return this.#uuidIte.next().value;
}
}
console.log( UUID.randomUUID() ); //e.g. 16E3908E-96DF-468E-B148-90A11814615F
겸사겸사 말씀드리겠습니다.js에 삽입되었을 때crypto
가 존재하지 않기 때문에 Math.random()
로 설치할 수 있습니다.둘째 (crypto 미사용)
class UUID {
static #uuidIte = ( function* () {
const HEXOCTETS = Object.freeze( [ ...Array( 0x100 ) ].map( ( e, i ) => i.toString( 0x10 ).padStart( 2, "0" ).toUpperCase() ) );
const VARSION = 0x40;
const VARIANT = 0x80;
const bytes = new Uint8Array( 16 );
const rand = new Uint32Array( bytes.buffer );
for (;;) {
for ( let i = 0; i < rand.length; i++ ) {
rand[ i ] = Math.random() * 0x100000000 >>> 0;
}
yield "" +
HEXOCTETS[ bytes[ 0 ] ] +
HEXOCTETS[ bytes[ 1 ] ] +
HEXOCTETS[ bytes[ 2 ] ] +
HEXOCTETS[ bytes[ 3 ] ] + "-" +
HEXOCTETS[ bytes[ 4 ] ] +
HEXOCTETS[ bytes[ 5 ] ] + "-" +
HEXOCTETS[ bytes[ 6 ] & 0x0f | VARSION ] +
HEXOCTETS[ bytes[ 7 ] ] + "-" +
HEXOCTETS[ bytes[ 8 ] & 0x3f | VARIANT ] +
HEXOCTETS[ bytes[ 9 ] ] + "-" +
HEXOCTETS[ bytes[ 10 ] ] +
HEXOCTETS[ bytes[ 11 ] ] +
HEXOCTETS[ bytes[ 12 ] ] +
HEXOCTETS[ bytes[ 13 ] ] +
HEXOCTETS[ bytes[ 14 ] ] +
HEXOCTETS[ bytes[ 15 ] ];
}
} )();
static randomUUID() {
return this.#uuidIte.next().value;
}
}
console.log( UUID.randomUUID() ); //e.g. 16E3908E-96DF-468E-B148-90A11814615F
이상!분산형이 고속으로 생성될 수 있는 유일한 값으로 사용되는 것은 불가사의하다.
Reference
이 문제에 관하여(Javascript를 통한 UUID 생성(v4)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/37cohina/articles/52d3c87f99cc2f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)