निम्नलिखित प्रश्न उठ गए क्योंकि मैं bytes
स्ट्रिंग्स का उपयोग करने की कोशिश कर रहा था क्योंकि कुंजीपटल कुंजी और बाइट मान जिन्हें मैं बराबर समझा जाता था, को बराबर नहीं माना जा रहा था।बाइट लिटरल के पायथन तुलना
निम्नलिखित पायथन कोड बराबर की तुलना क्यों नहीं करता है - क्या ये दो द्विआधारी डेटा (उदाहरण के लिए जानबूझकर चुने गए हैं) के बराबर प्रतिनिधित्व नहीं हैं?
b'0b11111111' == b'0xff'
मैं जानता हूँ कि निम्नलिखित सच का मूल्यांकन करता है, तुल्यता का प्रदर्शन:
int(b'0b11111111', 2) == int(b'0xff', 16)
लेकिन अजगर बल मुझे प्रतिनिधित्व पता करने के लिए करता है? क्या यह एंडियन-नेस से संबंधित है? क्या इन सभी को परिवर्तित करने के अलावा अन्य समकक्ष तुलना करने के लिए इन्हें मजबूर करने का कोई आसान तरीका है। हेक्स अक्षर? क्या कोई भी (कुछ हद तक) प्लेटफ़ॉर्म स्वतंत्र तरीके से सभी प्रस्तुतियों के बीच स्थानांतरित करने के लिए एक पारदर्शी और स्पष्ट विधि सुझा सकता है (या मैं बहुत ज्यादा पूछ रहा हूं)?
संपादित करें:
नीचे टिप्पणी को देखते हुए, मैं वास्तव में सूचकांक एक शब्दकोश प्रपत्र b'0b11111111'
में 8 बिट का उपयोग कर, तो क्यों अजगर यह दस बाइट्स का विस्तार करता है करना चाहते हैं और मुझे लगता है कि कैसे रोकूँ?
यह एक बड़े पेड़ डेटा संरचना का एक छोटा टुकड़ा है और 80 के कारक द्वारा मेरी अनुक्रमणिका का विस्तार करना स्मृति की एक बड़ी अपशिष्ट की तरह लगता है।
लेकिन क्या '0 बी' इंगित नहीं करता है कि 'बाइट्स' शाब्दिक का अर्थ है कि आप इसे कैसे समझते हैं, इस बारे में अनियंत्रित बाइनरी प्रतिनिधित्व होना चाहिए? –
@ मैथ्यूहेमके: इसका मतलब है कि आपके पास बाइट वैल्यू 48 है जिसके बाद बाइट वैल्यू 98 है। ये * होता है * एएससीआईआई अक्षरों '0' और' बी' के रूप में व्याख्या करने योग्य है। –
यदि ऐसा है, तो मैं कैसे बना सकता हूं ताकि मैं बाइट्स स्ट्रिंग को वास्तव में 1 बाइट बन सकूं जिसका मेरा मतलब है? –