खोज…


वाक्य - विन्यास

  • पैक (fmt, v1, v2, ...)
  • अनपैक (एफएमटी, बफर)

एक बाइट ऑब्जेक्ट में मूल्यों की एक सूची प्रारूपित करें

from struct import pack

print(pack('I3c', 123, b'a', b'b', b'c'))  # b'{\x00\x00\x00abc'

एक प्रारूप स्ट्रिंग के अनुसार एक बाइट ऑब्जेक्ट को अनपैक करें

from struct import unpack

print(unpack('I3c', b'{\x00\x00\x00abc'))  # (123, b'a', b'b', b'c')

एक संरचना पैकिंग

मॉड्यूल " संरचना " अजगर वस्तुओं को बाइट्स के सन्निहित चंक के रूप में पैक करने की सुविधा प्रदान करता है या अजगर संरचनाओं को बाइट्स के एक टुकड़े को इकट्ठा करता है।

पैक फ़ंक्शन एक प्रारूप स्ट्रिंग और एक या अधिक तर्क लेता है, और एक बाइनरी स्ट्रिंग लौटाता है। यह बहुत पसंद है जैसे आप एक स्ट्रिंग को स्वरूपित कर रहे हैं सिवाय इसके कि आउटपुट स्ट्रिंग नहीं बल्कि बाइट्स का एक हिस्सा है।

import struct
import sys
print "Native byteorder: ", sys.byteorder
# If no byteorder is specified, native byteorder is used
buffer = struct.pack("ihb", 3, 4, 5)
print "Byte chunk: ", repr(buffer)
print "Byte chunk unpacked: ", struct.unpack("ihb", buffer)
# Last element as unsigned short instead of unsigned char ( 2 Bytes)
buffer = struct.pack("ihh", 3, 4, 5)
print "Byte chunk: ", repr(buffer)

आउटपुट:

देशी बाइटऑर्डर: थोड़ा बाइट चंक: '\ x03 \ x00 \ x00 \ x00 \ x04 \ x005' बाइट chunk अनपैक किया गया: (3, 4, 5) बाइट चंक: '\ x03 \ x00 \ x00 \ x00 \ x04 \ x004। \ X05 \ x00 '

आप नेटवर्क से प्राप्त डेटा के साथ नेटवर्क बाइट ऑर्डर का उपयोग कर सकते हैं या इसे भेजने के लिए डेटा पैक कर सकते हैं।

import struct
# If no byteorder is specified, native byteorder is used
buffer = struct.pack("hhh", 3, 4, 5)
print "Byte chunk native byte order: ", repr(buffer)
buffer = struct.pack("!hhh", 3, 4, 5)
print "Byte chunk network byte order: ", repr(buffer)

आउटपुट:

बाइट चंक देशी बाइट ऑर्डर: '\ x03 \ x00 \ x04 \ x00 \ x05 \ x00'

बाइट चंक नेटवर्क बाइट ऑर्डर: '\ x00 \ x03 \ x00 \ x04 \ x00 \ x05'

आप पहले दिए गए बफ़र को प्रदान करके एक नया बफ़र आवंटित करने के ओवरहेड से बचकर अनुकूलन कर सकते हैं।

import struct
from ctypes import create_string_buffer
bufferVar = create_string_buffer(8)
bufferVar2 = create_string_buffer(8)
# We use a buffer that has already been created
# provide format, buffer, offset and data
struct.pack_into("hhh", bufferVar, 0, 3, 4, 5)
print "Byte chunk: ", repr(bufferVar.raw)
struct.pack_into("hhh", bufferVar2, 2, 3, 4, 5)
print "Byte chunk: ", repr(bufferVar2.raw)

आउटपुट:

बाइट चंक: '\ x03 \ x00 \ x04 \ x00 \ x05 \ x00 \ x00 \ x00'

बाइट चंक: '\ x00 \ x00 \ x03 \ x00 \ x04 \ x00 \ x05' / x00 '



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow