2

MongodbオブジェクトIDは、次のように多くの情報がバイト配列にパックされているバイト配列です。

http://www.mongodb.org/display/DOCS/Object+IDs#ObjectIDs-TheBSONObjectIdDatatype

つまり、ID47cc67093475061e3d95369dを指定すると、日時、マシン、ID、およびインク情報が含まれます。これらすべての情報をIDにどのように保存しますか?

彼らはこれをどのようにやっていますか?バイトパッキングはどのように行われていますか?

これを表す例はありますか?

4

2 に答える 2

2

あなたの質問を理解していない場合はお詫びしますが、ObjectIdの形式はあなたが提供したリンクに記載されています。指定したIDでは、これは次のことを意味します。

47cc67093475061e3d95369d

バイト0、1、2、および3=タイムスタンプ。
47cc6709=タイムスタンプ。

バイト4、5、および6=マシンID。
347506=マシンID。

バイト7および8=PID
1e3d= PID

バイト9、10、および11=増分
95369d=増分

于 2012-08-27T18:34:09.187 に答える
2

時間は1月から1970年までの秒数で、この例では1,204,578,057です。

バイナリ表現の場合、1204578057(基数10)は47cc6709(基数16)です。することは何もない。それはまさにそれがコンピュータにどのように見えるかです。

その値を文字列に変換するには(ObjectIdメソッドの場合)、「X」を指定してToStringを呼び出すだけです。

1204578057.ToString("X")

構造自体はここで完全に定義されています--BSONObjectIDSpecification

ここで構造体のレイアウトを調べることもできます:http: //msdn.microsoft.com/en-us/library/system.runtime.interopservices.structlayoutattribute.aspx

于 2012-08-27T21:30:01.163 に答える