ObjectId दस्तावेज़ों के अनुसार , वह स्ट्रिंग जो आप देख रहे हैं वह 12 बाइट्स का हेक्स प्रतिनिधित्व है। यह यूनिकोड या एक स्ट्रिंग भी नहीं है। यह वास्तव में एक संख्या है।
एक बाइट 8 बिट का होता है, जिसका अर्थ है कि इसमें 2^8 ==256 संभावित मान हो सकते हैं (देखें Byteए> )।
आप संक्षेप में 256 संभावित मानों वाली किसी संख्या का प्रतिनिधित्व कैसे करते हैं? इसके बजाय इसे 16^2 के रूप में प्रस्तुत करने के बारे में कैसे? आप इसे 2 हेक्साडेसिमल मानों (आधार 16) का उपयोग करके प्राप्त कर सकते हैं। केवल एक चीज जिसे आपको अविष्कार करने की आवश्यकता है वह है नंबरिंग सिस्टम जो 10 के बजाय 16 हो जाता है।
वास्तव में, हम a
. के अक्षरों का उपयोग करते हैं करने के लिए f
10 से 15 तक के मानों का प्रतिनिधित्व करने के लिए।
इस प्रकार, एक बाइट को दो हेक्साडेसिमल संख्याओं में दर्शाया जा सकता है। यह केवल a
. का उपयोग करने के लिए होता है करने के लिए f
क्योंकि हमें उनके लिए विशेष प्रतीकों का आविष्कार करने की जहमत नहीं उठानी पड़ी। वे पत्र नहीं हैं। वे संख्याएं हैं।
तो नहीं, ऑब्जेक्ट आईडी में आप जो स्ट्रिंग देखते हैं वह 24 बाइट्स का प्रतिनिधित्व नहीं करता है। प्रत्येक 2 वर्ण इसके बजाय एक बाइट का प्रतिनिधित्व करते हैं। 24 हेक्स संख्याएं ==12 बाइट्स।