2011-06-21 21 views
0

Javascriptを使用してタイムスタンプ番号からUUIDを作成するにはどうすればよいですか?タイムスタンプ(番号として)からUUIDを作成

存在するAPIはありますか?

+0

詳細をお知らせください。タイムスタンプ番号はどういう意味ですか?私の回答で説明したように、この質問は今のところはっきりしていません。 – pr1001

答えて

3

Wikipedia pageによると、UUIDは128ビットの数値です。 Javascriptの数字は64ビットの浮動小数点数(according to this SO answer)なので、すでにUUID番号が文字列の形で書かれていることを前提としています。

引用符で囲んだWikipedia:「UUIDは32個の16進数で構成され、ハイフンで区切られた5つのグループに8-4-4-4-12の形式で合計36文字(32桁と4つのハイフン)が表示されます。 " Javascript NumbertoStringメソッドには、ベース(16進数は16進数)を指定できますが、ここではNumberを使用することはできません。

したがって、128ビットの数値を最初に処理して16進数に変換できる何らかのコードが必要です。ノックすると、様々なBigDecimalBigNumber Javascriptライブラリがあります。おそらくa SO questionをガイドとして使用して、好きなものを見つけてください。プロセスで:

var hexNum = "550e8400e29b41d4a716446655440000"; 

その後、あなたは簡単な-セパレータと異なる部分文字列を組み合わせて、あなたはあなたのUUID文字列を持っている:

var UUID = hexNum.substr(0, 8) + '-' + hexNum.substr(8, 4) + '-' + 
    hexNum.substr(12, 4) + '-' + hexNum.substr(16, 4) + '-' + hexNum.substr(20) 

アップデートあなたがそうのような文字列を持っているだろうと行ってました私の回答を書いてみると、元の質問が更新され、「タイムスタンプ番号」からUUIDを作成する方法を尋ねました。私はそれが何であろうと、おそらくUNIXのタイムスタンプ、例えばDate.now()の結果であるかどうかはわかりません。 UUIDは(実質的に)ユニークで、ミリ秒の時間はほとんどユニークではないと思われるので、番号を作成する前に一意性のいくつかの要素を導入したいと思うでしょう。まだしていないとしても、64ビットのNumberを128ビットの数値に変換する必要があります。もう一度、何らかの種類のBigDecimalまたはBigNumberライブラリを使用してください。

+0

ありがとうございます。私は、逆の操作を行うための良いjsコードを見つけました。私の最初の操作は、UUIDから日付タイムスタンプまでではないことがわかりました。私は別のフォーマットで扱っていました。しかし、定義に感謝します。 :) – Victor

0
+0

いいえ、その疑問は無作為のUUIDを作成しようとしています。私はすでにUUIDを持っています。私はそれをUUID形式で書く必要があります。 – Victor

+1

いずれの場合でも、別の質問にリンクして質問に回答しないでください。 –

関連する問題