इस समारोह के बाद मैं हूँ: -
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
करता है, लेकिन मुझे संदेह है कि आपको इसकी आवश्यकता है।