6
bytearray
के अंदर ऑफसेट में readinto()
विधि कॉल का उपयोग कैसे कर सकता है, उसी तरह struct.unpack_from
काम करता है?ऑफसेट पर एक बाइटियर में पढ़ें?
bytearray
के अंदर ऑफसेट में readinto()
विधि कॉल का उपयोग कैसे कर सकता है, उसी तरह struct.unpack_from
काम करता है?ऑफसेट पर एक बाइटियर में पढ़ें?
आप नौकरी करने के लिए memoryview
का उपयोग कर सकते हैं। उदाहरण के लिए:
dest = bytearray(10) # all zero bytes
v = memoryview(dest)
ioObject.readinto(v[3:])
print(repr(dest))
यह मानते हुए कि iObject.readinto(...)
बाइट्स 1, 2, 3, 4, और 5 पढ़ता है तो इस कोड को प्रिंट:
bytearray(b'\x00\x00\x00\x01\x02\x03\x04\x05\x00\x00')
तुम भी struct.unpack_from
और struct.pack_into
साथ memoryview
वस्तु का उपयोग कर सकते हैं। उदाहरण के लिए:
dest = bytearray(10) # all zero bytes
v = memoryview(dest)
struct.pack_into("2c", v[3:5], 0, b'\x07', b'\x08')
print(repr(dest))
इस कोड को प्रिंट
bytearray(b'\x00\x00\x00\x07\x08\x00\x00\x00\x00\x00')
मेरे इरादा एक ऑफसेट पर bytearray में सीधे पढ़ा है, और सभी मध्यवर्ती नकल से बचने के लिए है। –
मैंने 'मेमोरीव्यू' कक्षा का उपयोग करके एक उदाहरण शामिल करने के लिए अपना उत्तर संपादित किया है, जो मुझे लगता है कि आप जो चाहते हैं वह करता है। – srgerg
यह मेमोरीव्यू फॉर्म जो मैं चाहता था उसे पूरा करने के लिए प्रतीत होता है। अगर मैंने struct.unpack_into के साथ एक ही काम किया है, और ऑफ़सेट के बजाय मेमोरीव्यू का उपयोग किया है, तो क्या यह वही होगा? यदि ऐसा है, तो कृपया इस पर ध्यान केंद्रित करने के लिए अपने शेष उत्तर को हटा दें। –