python - learn - पूर्णांक में स्ट्रिंग(बाइट सरणी) की सूची-अजगर



python language pdf (5)

मेरे पास पूर्णांक एसेसी मूल्यों की एक सूची है जो मुझे क्रिप्टोकरेंसी के लिए कुंजी के रूप में उपयोग करने के लिए एक स्ट्रिंग (बाइनरी) में बदलने की आवश्यकता है। (मैं अजगर में जावा क्रिप्टो कोड को फिर से लागू कर रहा हूं)

यह काम करता है (एक 8-बाइट कुंजी मानते हुए):

key = struct.pack('BBBBBBBB', 17, 24, 121, 1, 12, 222, 34, 76)

हालांकि, मैं कुंजी लंबाई और अनपैक () पैरामीटर सूची हार्डकोड नहीं करना पसंद करूंगा।

पूर्णांक की प्रारंभिक सूची को देखते हुए मैं इसे कैसे सही ढंग से लागू कर सकता हूं?

धन्यवाद!


एक और दृष्टिकोण (पायथन 2.7+):

"".join(str(x) for x in int_array)

पाइथन 2.6 के लिए और बाद में यदि आप बाइट्स के साथ काम कर रहे हैं तो एक bytearray सबसे स्पष्ट विकल्प है:

>>> str(bytearray([17, 24, 121, 1, 12, 222, 34, 76]))
'\x11\x18y\x01\x0c\xde"L'

मेरे लिए यह एलेक्स मार्टेली के जवाब से भी अधिक प्रत्यक्ष है - अभी भी कोई स्ट्रिंग हेरफेर या len कॉल नहीं है, लेकिन अब आपको कुछ भी आयात करने की आवश्यकता नहीं है!


यह एक पुराने प्रश्न को पुनर्जीवित कर रहा है, लेकिन पायथन 3 में, आप सीधे bytes उपयोग कर सकते हैं:

>>> bytes([17, 24, 121, 1, 12, 222, 34, 76])
b'\x11\x18y\x01\x0c\xde"L'

map() फ़ंक्शन का उपयोग करके पिछले संस्करण का छोटा संस्करण (अजगर 2.7 के लिए काम करता है):

"".join(map(chr, myList))


struct.pack('B' * len(integers), *integers)

*sequence अर्थ है "अनपैक अनुक्रम" - या बल्कि, "जब कॉलिंग f(..., *args ,...) , args = sequence "।





python