Theo tài liệu ObjectId , chuỗi mà bạn thấy là một đại diện hex của 12 byte. Nó không phải là Unicode hoặc thậm chí là một chuỗi. Nó thực sự là một con số.
Một byte là 8 bit, nghĩa là nó có thể có 2 ^ 8 ==256 giá trị có thể có (xem Byte ).
Làm thế nào để bạn biểu diễn một số với 256 giá trị có thể một cách ngắn gọn? Làm thế nào về việc biểu diễn nó là 16 ^ 2? Bạn có thể đạt được điều này bằng cách sử dụng 2 giá trị thập lục phân (cơ số 16). Điều duy nhất bạn cần phát minh là một hệ thống đánh số chuyển thành 16 thay vì 10.
Trên thực tế, chúng tôi sử dụng các chữ cái từ a
thành f
đại diện cho các giá trị từ 10 đến 15.
Do đó, một byte có thể được biểu diễn bằng hai số thập lục phân. Nó chỉ xảy ra khi sử dụng a
thành f
vì chúng tôi không thể bận tâm đến việc phát minh ra các biểu tượng đặc biệt cho chúng. Chúng không phải là chữ cái. Chúng là những con số.
Vì vậy, không, chuỗi bạn thấy trong ObjectId không đại diện cho 24 byte. Cứ 2 ký tự đại diện cho một byte. 24 số hex ==12 byte.