我正在寻找在node.js中生成base62 UUID的解决方案。我想避免使用base64,因为我打算根据这些UUID和=
,\
,-
,_
等字符创建文件夹(如在某些实现中)不是那个人/文件系统友好。
Base62还具有比典型的v4 UUID更短的优势(在我的上下文中)。
更新(为清晰起见):我之前应该说我已经尝试过使用base62
模块,但这并不能解决我的问题,因为base62
需要使用javascript中的数字整数只能精确到52位,而UUID有128位。
答案 0 :(得分:6)
以下是一个全面的答案:
base-x
+ node-uuid
受@ Jonathan先前评论的启发。
使用node-uuid生成UUID,然后使用base-x对其进行编码:
var buf = new Buffer(16);
var uuid = Uuid.v4(null, buf);
var uuidB62 = baseX.encode(uuid);
// -> 71jbvv7LfRKYp19gtRLtkn
base-x
速度非常快,因此这是性能最佳的解决方案。
uuid-base62
在了解base-x
之前,我继续为base62编码(b62)创建了一个模块,为base62 UUID生成创建了另一个模块:uuid-base62:
var uuidB62 = uuidBase62.v4(); // -> 2qY9COoAhfMrsH7mCyh86T
这是 no frills 解决方案。 目前它没有A那么快,因为 b62
慢得多,但我打算用base-x
替换它。
更新: uuid-base62
已更新为使用base-x
。
答案 1 :(得分:2)
更新:我最初指出的模块是将基数为62的数字转换为基数为10,反之亦然,因此不会这样做。看起来原始海报正在创建自己的模块:https://github.com/dmarcelino/b62
您可以使用a base62 module。以下是他们的示例代码:
Base62 = require('base62')
Base62.encode(999) // 'g7'
Base62.decode('g7') // 999
可以使用npm install base62
安装模块。要将其作为package.json
中的依赖项,请改用npm install --save base62
。
答案 2 :(得分:0)
安装软件包:
npm install uuid
npm install base-x
生成标识符:
const uuid = require('uuid')
const base62 = require('base-x')('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
const id = base62.encode(Buffer.from(uuid.parse(uuid.v4())))
答案 3 :(得分:-1)
npm install base62x
var base62x = require('base62x');
var encoded = base62x.encode('hello');
var decodedBuffer = base62x.decode(encoded);
var decodedString = base62x.decodeString(encoded);
Base62x.class.js是此问题的另一个选项。有关详细信息,请参阅https://github.com/wadelau/Base62x,https://www.npmjs.com/package/base62x。