CNode

怎么把 uuid 进行 Base36 编码

问答
Xxuxu7发布于7 年前最后回复7 年前4 回复6326 浏览0 收藏

使用 Browser JavaScript 生成 uuid 作为文件名,由于太长,想要通过 Base36 缩短。思路是先把 uuid 转换成 BigInt,然后再 bigInt.toStirng(36)。 但问题是:

  1. 怎么把 uuid 转成 BigInt
  2. 还要解决浏览器不支持 BigInt 类型的问题。

还有更便捷的方法吗?

查看回复

回复 (4)

Z
zuohuadong#1·7 年前

直接 nanoid https://github.com/ai/nanoid 或者根据文件的md5 或者 sha256

X
xuxu7#2·7 年前
引用 zuohuadong直接 nanoid https://github.com/ai/nanoid 或者根据文件的md5 或者 sha256

@zuohuadong 需要浏览器端 js 生成安全的、不可猜测的唯一编码,nanoid 依赖 crypto/msCrypto,IE11 前的浏览器不支持。

M
myy#3·7 年前

其实可以自己生成一个合适大小的随机integer,然后用 toString(36) ,长度不够可以搞多次,拼接起来就行了。

X
xuxu7#4·7 年前

@my 谢谢提供思路:

let array = new Uint32Array(1);
window.crypto.getRandomValues(array);
const filename = array[0].toString(36);

上面是简易方法,生成的长度是不一样的。

参与回复
登录后即可参与回复。登录