sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo es un MongoDB ObjectID de 12 bytes?

Según la documentación de ObjectId , esa cadena que ves es una representación hexadecimal de los 12 bytes. No es Unicode ni siquiera una cadena. En realidad es un número.

Un byte tiene 8 bits, lo que significa que puede tener 2^8 ==256 valores posibles (ver Byte ).

¿Cómo se representa un número con 256 valores posibles de forma sucinta? ¿Qué tal representarlo como 16 ^ 2 en su lugar? Puede lograr esto usando 2 valores hexadecimales (base 16). Lo único que necesitas inventar es un sistema de numeración que llegue a 16 en lugar de 10.

De hecho, usamos letras de a a f para representar valores del 10 al 15.

Así, un byte se puede representar en dos números hexadecimales. Simplemente sucede que usa a a f ya que no podíamos molestarnos en inventar símbolos especiales para ellos. no son letras Son números.

Entonces no, la cadena que ve en ObjectId no representa 24 bytes. Cada 2 caracteres representan un byte en su lugar. 24 números hexadecimales ==12 bytes.