字节包装像mongdbo objectid

时间:2012-08-27 17:42:31

标签: c# mongodb bytearray

Mongodb对象id是一个字节数组,其中许多信息被打包到字节数组中,如下所示:

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

ie:给定一个id 47cc67093475061e3d95369d,它包含datetime,machine,id和inc信息。他们如何将所有这些信息存储到id?

他们是怎么做到的?字节打包是如何发生的?

有代表这个的例子吗?

2 个答案:

答案 0 :(得分:2)

如果我不理解您的问题,请道歉,但ObjectId的格式在您提供的链接中给出。在您提供的ID中,这意味着以下内容:

47cc67093475061e3d95369d

字节0,1,2和3 =时间戳。
47cc6709 =时间戳。

字节4,5和6 =机器ID。
347506 =机器ID。

字节7和8 = PID
1e3d = PID

字节9,10和11 =增量
95369d =增量

答案 1 :(得分:2)

时间是自1970年1月1日起的秒数,在他们的例子中是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