Int.to_bytes का असंगत व्यवहार ()
जब मैं लिखता हूं:
expint = 34614
expint = expint.to_bytes(2,'big')
मुझे b '\ x87 \ x36' के बजाय expint = b '\ x876' का मान मिलता है (3 गायब है और प्रारूप गलत लगता है)। हालाँकि जब मैंने एक्सपिंट = 65418 के साथ भी यही कोशिश की तो मुझे सही परिणाम मिला, b '\ xff \ x8a'। क्या मैं दुभाषिया या अन्य उपकरणों में बग का उपयोग कर सकता हूं? मैं Visual Studio 2017 में Python 3.7 का उपयोग कर रहा हूं।
जवाब
इससे कुछ लेना-देना नहीं है int.to_bytes()
, और bytes
टाइप के साथ ही सब कुछ करना है।
मुझे b '\ x87 \ x36' के बजाय expint = b '\ x876' का मान मिलता है
इस शिकायत का कोई मतलब नहीं है, क्योंकि b'\x876'
और b'\x87\x36'
एक ही चीज हैं :
>>> b'\x87\x36'
b'\x876'
>>> b'\x87\x36' == b'\x876'
True
एक bytes
वस्तु का प्रतिनिधित्व है नहीं बस एक हेक्स डंप। बाइट-स्ट्रिंग्स का व्याकरण कई अन्य विकल्पों की अनुमति देता है, ऐतिहासिक कारणों से (यानी: क्योंकि 2.x में हम दिखावा करते थे कि वे पाठ का प्रतिनिधित्व कर सकते हैं)। विहित निरूपण (अर्थात जब आप print
उदाहरण के लिए पाइथन द्वारा निर्मित ) केवल \x
शैली का उपयोग करते हैं एक अंतिम उपाय के रूप में बच निकलता है।
ASCII में, 0x36
प्रतीक के साथ बाइट को मैप किया जाता है 6
। (फिर से, हम दिखावा करते थे कि हम इस तरह से पाठ का प्रतिनिधित्व कर सकते हैं। और अगर हमें केवल अंग्रेजी के साथ-साथ यूरोपीय भाषाओं का एक छोटा सा चयन करना है, और किसी भी समय हम जिस यूरोपीय भाषा के साथ काम कर रहे हैं, उसे चुन सकते हैं। -इसके साथ दूर हो जाओ, भी।