uuid-base62
Version:
Base62 non-sequential url-safe UUID generator (RFC4122)
114 lines (88 loc) • 2.9 kB
JavaScript
var baseX = require('base-x')('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
var b62 = require('b62');
var Uuid = require('node-uuid');
var buf = new Buffer([0x30, 0x17, 0xe8, 0x92, 0xe2, 0x3d, 0xff]);
var str = "Hello World!";
var encodedX, encoded62, decodedX, decoded62, runs=100;
// warm up
console.time('base-x');
for(var i = 0; i < runs; i++){
encodedX = baseX.encode(buf, 'hex');
decodedX = baseX.decode(encodedX);
//console.log('x:', encodedX);
//console.log('x:', new Buffer(decodedX).toString('hex'));
encodedX = baseX.encode(new Buffer(str));
decodedX = baseX.decode(encodedX);
//console.log('x:', encodedX);
//console.log('x:', new Buffer(decodedX).toString());
}
console.timeEnd('base-x');
console.time('b62');
for(var i = 0; i < runs; i++){
encoded62 = b62.encode(buf);
decoded62 = b62.decode(encoded62, 'hex');
//decoded62 = b62.decode(encoded62);
//console.log('b62:', decoded62);
encoded62 = b62.encode(str);
//console.log('b62:', encoded62);
//console.log('x:', 'b62:', decoded62);
}
console.timeEnd('b62');
// Test
console.time('base-x');
for(var i = 0; i < runs; i++){
encodedX = baseX.encode(buf, 'hex');
decodedX = baseX.decode(encodedX);
encodedX = baseX.encode(new Buffer(str));
decodedX = baseX.decode(encodedX);
}
console.timeEnd('base-x');
console.time('b62');
for(var i = 0; i < runs; i++){
encoded62 = b62.encode(buf);
decoded62 = b62.decode(encoded62, 'hex');
encoded62 = b62.encode(str);
decoded62 = b62.decode(encoded62);
}
console.timeEnd('b62');
// b64
console.log()
var b64 = b62("-_0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
var encoded = b64.encode("Hi this is b64 example");
console.log(encoded);
console.log(b64.decode(encoded));
// uuid
console.log();
var buf = new Buffer(16);
var uuid = Uuid.v4(null, buf);
var uuidB62 = baseX.encode(uuid);
// -> 71jbvv7LfRKYp19gtRLtkn
console.log(uuidB62);
console.log(new Buffer(baseX.decode(uuidB62)).toString('hex'));
console.log();
console.log('encode');
// uuid2
//uuid = '06ad547ffe02477b9473f7977e4d5e17';
//uuid = '00000000000000000000000000000000';
uuid = 'ffffffffffffffffffffffffffffffff';
console.log('basex:', baseX.encode(new Buffer(uuid, 'hex')));
console.log('b62 :', b62.encode(new Buffer(uuid, 'hex')));
console.log();
console.log('decode');
uuidB62 = '0cBaidlJ84Ggc5JA7IYCgv';
console.log('basex:', new Buffer(baseX.decode(uuidB62)).toString('hex'));
console.log('b62 :', b62.decode(uuidB62, 'hex'));
console.log();
function trimLeft(str, maxLen){
str = str + "";
var trim = 0;
while(str[trim] === '0' && (str.length - trim) > maxLen){
trim++;
}
return str.slice(trim);
};
console.log('001:', trimLeft('00001', 3));
console.log('01:', trimLeft('01', 2));
console.log('01:', trimLeft('001', 2));
console.log('111:', trimLeft('111', 2));
console.log('111:', trimLeft('0111', 2));