पायथन में बाइट्स ऑब्जेक्ट: संख्यात्मक रूपांतरण से परे
पायथन में बाइट्स ऑब्जेक्ट के साथ काम करते समय, यह समझना आवश्यक है कि बाइट्स (एन) कैसे हैं फ़ंक्शन संख्यात्मक रूपांतरण से भिन्न है। एक पूर्णांक n को बाइट्स (n) में पास करने से n का बाइनरी प्रतिनिधित्व नहीं मिलता है, बल्कि लंबाई n की एक बाइट स्ट्रिंग बनती है जो शून्य बाइट्स (\x00) से भरी होती है।
व्यवहार के पीछे तर्क
यह व्यवहार पूर्णांक से बाइट्स में अप्रत्याशित रूपांतरण को रोकने के प्रयास के हिस्से के रूप में पायथन 3.2 में पेश किया गया था। पहले, बाइट्स (एन) पूर्णांक को बाइनरी प्रतिनिधित्व में एक अनिर्दिष्ट रूपांतरण करता था, जिससे संभावित समस्याएं पैदा होती थीं। , यह सुनिश्चित करते हुए कि कोई अंतर्निहित रूपांतरण न हो। जिन डेवलपर्स को पूर्णांक के बाइनरी प्रतिनिधित्व की आवश्यकता होती है, वे अब स्पष्ट रूप से to_bytes() विधि का उपयोग कर सकते हैं।
वैकल्पिक समाधानपूर्णांकों को नियंत्रित तरीके से बाइट्स में परिवर्तित करने के लिए, पायथन int.to_bytes() विधि प्रदान करता है। यह विधि बाइट क्रम ('बड़ा' या 'छोटा एंडियन') और परिणामी बाइट स्ट्रिंग की वांछित लंबाई निर्दिष्ट करने की अनुमति देती है।
इसके अलावा, इस रूपांतरण को सुविधाजनक बनाने के लिए कस्टम सहायक फ़ंक्शन बनाए जा सकते हैं:
def int_to_bytes(number: int) -> बाइट्स: """एक पूर्णांक को उसके अहस्ताक्षरित मान को दर्शाने वाले बाइट्स में परिवर्तित करता है।""" वापसी संख्या.to_बाइट्स(लंबाई=(8 (संख्या (संख्या वैकल्पिक[int]: """एक बाइट स्ट्रिंग को उसके संगत हस्ताक्षरित पूर्णांक मान में परिवर्तित करता है।""" रिटर्न int.from_bytes(binary_data, byteorder='big',signed=True)def int_to_bytes(number: int) -> bytes:
"""Converts an integer to bytes representing its unsigned value."""
return number.to_bytes(length=(8 (number (number Optional[int]:
"""Converts a byte string to its corresponding signed integer value."""
return int.from_bytes(binary_data, byteorder='big', signed=True)
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3