如何使用Javascript从时间戳编号创建UUID?
有没有existente API?
答案 0 :(得分:3)
根据Wikipedia page,UUID是128位数字。 Javascript编号是64位浮点数(according to this SO answer),因此我假设您已经以字符串的形式获得了UUID编号。
引用维基百科:“UUID由32个十六进制数字组成,显示在由连字符分隔的5个组中,格式为8-4-4-4-12,总共36个字符(32位和4个连字符)。” Javascript Number
的{{1}}方法可以给定一个基数(十六进制是基数16)但当然我们不能在这里使用toString
。
因此,您需要某种代码,它们可以先处理128位数,然后将它们转换为十六进制数。有各种BigDecimal和BigNumber Javascript库可供使用。只需找到您喜欢的一个,也许可以使用a SO question作为指导。完成后你会有一个像这样的字符串:
Number
然后,您可以简单地将不同的子字符串与var hexNum = "550e8400e29b41d4a716446655440000";
分隔符组合在一起,并获得您的UUID字符串:
-
更新:在编写回复的过程中,原始问题已更新,询问您如何根据“时间戳编号”创建UUID。我不确定那是什么,也许是Unix时间戳,例如var UUID = hexNum.substr(0, 8) + '-' + hexNum.substr(8, 4) + '-' +
hexNum.substr(12, 4) + '-' + hexNum.substr(16, 4) + '-' + hexNum.substr(20)
的结果。由于UUID应该(实际上)是唯一的并且毫秒时间几乎不是唯一的,我想你想在创建数字之前在数字中引入一些唯一性的元素。即使你没有,你仍然需要将64位Date.now()
转换为128位数,再次使用某种BigDecimal或BigNumber库。
答案 1 :(得分:0)