gpt4 book ai didi

mongodb - MongoDB ObjectID 是 12 个字节吗?

转载 作者:行者123 更新时间:2023-12-05 08:26:07 25 4
gpt4 key购买 nike

据我所知,MongoDB 中的字符串以 UTF-8 格式存储,因此每个字符的长度在 1 到 4 个字节之间。

MongoDB documentation says the following about ObjectID :

Returns a new ObjectId value. The 12-byte ObjectId value consists of:

a 4-byte value representing the seconds since the Unix epoch,
a 5-byte random value, and
a 3-byte counter, starting with a random value.

在示例中,它显示 ObjectId("507f1f77bcf86cd799439011")。这个字符串是 24 个字节,虽然在 UTF-8 中,所以我不明白这 12 个字节在哪里发挥作用。

最佳答案

根据 ObjectId documentation ,您看到的那个字符串是 12 个字节的十六进制表示。它不是 Unicode,甚至不是字符串。它实际上是一个数字。

一个字节是 8 位,这意味着它可以有 2^8 == 256 个可能的值(参见 Byte )。

如何简洁地表示具有 256 个可能值的数字?将其表示为 16^2 怎么样?您可以使用 2 个十六进制值(基数 16)来实现此目的。您唯一需要发明的是一个编号系统,从 10 变为 16。

事实上,我们使用从 af 的字母来表示值 10 到 15。

因此,一个字节可以用两个十六进制数来表示。它恰好使用 af 因为我们懒得为它们发明特殊的符号。它们不是字母。它们是数字。

所以不,您在 ObjectId 中看到的字符串并不代表 24 个字节。每 2 个字符代表一个字节。 24 个十六进制数 == 12 个字节。

关于mongodb - MongoDB ObjectID 是 12 个字节吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58279842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com