/ / अजगर 3 to_bytes वापस अजगर 2.7 के लिए रखी गई है? - अजगर

क्या पाइथन 3 to_bytes को पायथन 2.7 पर वापस पोर्ट किया गया है? - अजगर

इस समारोह के बाद मैं हूँ: -

http://docs.python.org/3/library/stdtypes.html#int.to_bytes

मुझे बड़े धीरज का समर्थन चाहिए।

उत्तर:

उत्तर № 1 के लिए 14

@Nneonneo के उत्तर के आधार पर, यहां एक ऐसा कार्य है जो the_bytes API का अनुकरण करता है।

def to_bytes(n, length, endianess="big"):
h = "%x" % n
s = ("0"*(len(h) % 2) + h).zfill(length*2).decode("hex")
return s if endianess == "big" else s[::-1]

जवाब के लिए 11 № 2

अपने मूल प्रश्न का उत्तर देने के लिए, to_bytes के लिए विधि int पायथन 3. से वस्तुओं को वापस पायथन 2.7 में नहीं रखा गया था। यह माना जाता था लेकिन अंततः खारिज कर दिया गया था। चर्चा देखें यहाँ.


उत्तर के लिए 7 № 3

मनमानी-लंबाई पैक करने के लिए longपायथन 2. x में, आप निम्नलिखित का उपयोग कर सकते हैं:

>>> n = 123456789012345678901234567890L
>>> h = "%x" % n
>>> s = ("0"*(len(h) % 2) + h).decode("hex")
>>> s
"x01x8exe9x0fxf6xc3sxe0xeeN?nxd2"

यह बड़े-एंडियन क्रम में संख्या को आउटपुट करता है; छोटे एंडियन के लिए, स्ट्रिंग को उल्टा करें (s[::-1])।


जवाब के लिए 2 № 4

आप शायद उपयोग कर सकते हैं struct.pack बजाय:

>>> import struct
>>> struct.pack(">i", 123)
"x00x00x00{"

यह रास्ते में मनमानी लंबाई नहीं करता है int.to_bytes करता है, लेकिन मुझे संदेह है कि आपको इसकी आवश्यकता है।