当前位置: 代码迷 >> 综合 >> uuid-js生成-唯一设备校验码-前端必用
  详细解决方案

uuid-js生成-唯一设备校验码-前端必用

热度:81   发布时间:2023-11-29 15:58:52.0

使用方法:
1、作为第三方库导入
2、复制代码创建静态类使用
3、使用时提前申明引入
4、完整资源包下载
uuid-js下载

Functions List

These are available just with require and return an instance of the UUID object:

UUID.create(4); // Generate V4 UUIDUUID.create(1); // Generate V1 TimeUUIDUUID.fromTime(time, last); // Generate a V1 empty TimeUUID from a Date object (Ex: new Date().getTime() )UUID.firstFromTime(time); // Same as fromTime but first sequenceUUID.lastFromTime(time); // Same as fromTime but last sequenceUUID.fromURN(strId); // Generate a UUID object from stringUUID.fromBytes(ints); // Generate a UUID object from bytesUUID.fromBinary(binary); // Generate a UUID object from binary

话不多说,上代码:


function UUIDjs() {
    
};
UUIDjs.maxFromBits = function(bits) {
    return Math.pow(2, bits);
};UUIDjs.limitUI04 = UUIDjs.maxFromBits(4);
UUIDjs.limitUI06 = UUIDjs.maxFromBits(6);
UUIDjs.limitUI08 = UUIDjs.maxFromBits(8);
UUIDjs.limitUI12 = UUIDjs.maxFromBits(12);
UUIDjs.limitUI14 = UUIDjs.maxFromBits(14);
UUIDjs.limitUI16 = UUIDjs.maxFromBits(16);
UUIDjs.limitUI32 = UUIDjs.maxFromBits(32);
UUIDjs.limitUI40 = UUIDjs.maxFromBits(40);
UUIDjs.limitUI48 = UUIDjs.maxFromBits(48);// Returns a random integer between min and max
// Using Math.round() will give you a non-uniform distribution!function getRandomInt(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}UUIDjs.randomUI04 = function() {
    return getRandomInt(0, UUIDjs.limitUI04-1);
};
UUIDjs.randomUI06 = function() {
    return getRandomInt(0, UUIDjs.limitUI06-1);
};
UUIDjs.randomUI08 = function() {
    return getRandomInt(0, UUIDjs.limitUI08-1);
};
UUIDjs.randomUI12 = function() {
    return getRandomInt(0, UUIDjs.limitUI12-1);
};
UUIDjs.randomUI14 = function() {
    return getRandomInt(0, UUIDjs.limitUI14-1);
};
UUIDjs.randomUI16 = function() {
    return getRandomInt(0, UUIDjs.limitUI16-1);
};
UUIDjs.randomUI32 = function() {
    return getRandomInt(0, UUIDjs.limitUI32-1);
};
UUIDjs.randomUI40 = function() {
    return (0 | Math.random() * (1 << 30)) + (0 | Math.random() * (1 << 40 - 30)) * (1 << 30);
};
UUIDjs.randomUI48 = function() {
    return (0 | Math.random() * (1 << 30)) + (0 | Math.random() * (1 << 48 - 30)) * (1 << 30);
};UUIDjs.paddedString = function(string, length, z) {
    string = String(string);z = (!z) ? '0' : z;var i = length - string.length;for (; i > 0; i >>>= 1, z += z) {
    if (i & 1) {
    string = z + string;}}return string;
};UUIDjs.prototype.fromParts = function(timeLow, timeMid, timeHiAndVersion, clockSeqHiAndReserved, clockSeqLow, node) {
    this.version = (timeHiAndVersion >> 12) & 0xF;this.hex = UUIDjs.paddedString(timeLow.toString(16), 8)+ '-'+ UUIDjs.paddedString(timeMid.toString(16), 4)+ '-'+ UUIDjs.paddedString(timeHiAndVersion.toString(16), 4)+ '-'+ UUIDjs.paddedString(clockSeqHiAndReserved.toString(16), 2)+ UUIDjs.paddedString(clockSeqLow.toString(16), 2)+ '-'+ UUIDjs.paddedString(node.toString(16), 12);return this;
};UUIDjs.prototype.toString = function() {
    return this.hex;
};
UUIDjs.prototype.toURN = function() {
    return 'urn:uuid:' + this.hex;
};UUIDjs.prototype.toBytes = function() {
    var parts = this.hex.split('-');var ints = [];var intPos = 0;for (var i = 0; i < parts.length; i++) {
    for (var j = 0; j < parts[i].length; j+=2) {
    ints[intPos++] = parseInt(parts[i].substr(j, 2), 16);}}return ints;
};UUIDjs.prototype.equals = function(uuid) {
    if (!(uuid instanceof UUID)) {
    return false;}if (this.hex !== uuid.hex) {
    return false;}return true;
};UUIDjs.getTimeFieldValues = function(time) {
    var ts = time - Date.UTC(1582, 9, 15);var hm = ((ts / 0x100000000) * 10000) & 0xFFFFFFF;return {
     low: ((ts & 0xFFFFFFF) * 10000) % 0x100000000,mid: hm & 0xFFFF, hi: hm >>> 16, timestamp: ts };
};UUIDjs._create4 = function() {
    return new UUIDjs().fromParts(UUIDjs.randomUI32(),UUIDjs.randomUI16(),0x4000 | UUIDjs.randomUI12(),0x80   | UUIDjs.randomUI06(),UUIDjs.randomUI08(),UUIDjs.randomUI48());
};UUIDjs._create1 = function() {
    var now = new Date().getTime();var sequence = UUIDjs.randomUI14();var node = (UUIDjs.randomUI08() | 1) * 0x10000000000 + UUIDjs.randomUI40();var tick = UUIDjs.randomUI04();var timestamp = 0;var timestampRatio = 1/4;if (now != timestamp) {
    if (now < timestamp) {
    sequence++;}timestamp = now;tick = UUIDjs.randomUI04();} else if (Math.random() < timestampRatio && tick < 9984) {
    tick += 1 + UUIDjs.randomUI04();} else {
    sequence++;}var tf = UUIDjs.getTimeFieldValues(timestamp);var tl = tf.low + tick;var thav = (tf.hi & 0xFFF) | 0x1000;sequence &= 0x3FFF;var cshar = (sequence >>> 8) | 0x80;var csl = sequence & 0xFF;return new UUIDjs().fromParts(tl, tf.mid, thav, cshar, csl, node);
};UUIDjs.create = function(version) {
    version = version || 4;return this['_create' + version]();
};UUIDjs.fromTime = function(time, last) {
    last = (!last) ? false : last;var tf = UUIDjs.getTimeFieldValues(time);var tl = tf.low;var thav = (tf.hi & 0xFFF) | 0x1000;  // set version '0001'if (last === false) {
    return new UUIDjs().fromParts(tl, tf.mid, thav, 0, 0, 0);} else {
    return new UUIDjs().fromParts(tl, tf.mid, thav, 0x80 | UUIDjs.limitUI06, UUIDjs.limitUI08 - 1, UUIDjs.limitUI48 - 1);}
};UUIDjs.firstFromTime = function(time) {
    return UUIDjs.fromTime(time, false);
};
UUIDjs.lastFromTime = function(time) {
    return UUIDjs.fromTime(time, true);
};UUIDjs.fromURN = function(strId) {
    var r, p = /^(?:urn:uuid:|\{)?([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{2})([0-9a-f]{2})-([0-9a-f]{12})(?:\})?$/i;if ((r = p.exec(strId))) {
    return new UUIDjs().fromParts(parseInt(r[1], 16), parseInt(r[2], 16),parseInt(r[3], 16), parseInt(r[4], 16),parseInt(r[5], 16), parseInt(r[6], 16));}return null;
};UUIDjs.fromBytes = function(ints) {
    if (ints.length < 5) {
    return null;}var str = '';var pos = 0;var parts = [4, 2, 2, 2, 6];for (var i = 0; i < parts.length; i++) {
    for (var j = 0; j < parts[i]; j++) {
    var octet = ints[pos++].toString(16);if (octet.length == 1) {
    octet = '0' + octet;}str += octet;}if (parts[i] !== 6) {
    str += '-';}}return UUIDjs.fromURN(str);
};UUIDjs.fromBinary = function(binary) {
    var ints = [];for (var i = 0; i < binary.length; i++) {
    ints[i] = binary.charCodeAt(i);if (ints[i] > 255 || ints[i] < 0) {
    throw new Error('Unexpected byte in binary data.');}}return UUIDjs.fromBytes(ints);
};// Aliases to support legacy code. Do not use these when writing new code as
// they may be removed in future versions!
UUIDjs['new'] = function() {
    return this.create(4);
};
UUIDjs.newTS = function() {
    return this.create(1);
};
  相关解决方案