البايتات في بايثون

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث

البايتات هي تسلسلات لبايتات مفردة غير قابلة للتغيير (immutable)، وهي مشابهة إلى حدّ كبير للسلاسل النصية. توفّر هذه الكائنات توابع تكون صالحة للاستخدام مع البيانات ذات الترميز ASCII نظرًا لأنّ الكثير من البروتوكولات الثنائية الرئيسية مستندة إلى هذا الترميز.

صيغة تعريف البايتات مماثلة لصيغة تعريف السلاسل النصية، باستثناء إضافة السابقة b إلى عبارة التعريف وكما يلي:

b'still allows embedded "double" quotes'        # علامات اقتباس مفردة
b"still allows embedded 'single' quotes".       # علامات اقتباس مزدوجة
b'''3 single quotes''', b"""3 double quotes"""  # علامات اقتباس ثلاثية

يسمح باستخدام حروف الترميز ASCII (بصرف النظر عن الترميز المستخدم في الشيفرة)، ويجب إدخال أي قيمة ثنائية تتجاوز 127 باستخدام تسلسل التهريب (escape sequence) الملائم.

كما هو الحال مع السلاسل النصية، فبالإمكان استخدام السابقة r لإيقاف عملية تهريب الحروف.

صحيح أنّ تمثيل البايتات يستند إلى النصوص ذات الترميز ASCII؛ إلا أنّ كائنات البايتات تسلك في الواقع سلوك تسلسل من الأعداد الصحيحة غير قابل للتغيير، وتكون كل قيمة في هذا التسلسل مقيّدة بالشرط الرياضية ‎0 <= x < 256‎، ويؤدي تجاوز هذه القيود إلى إطلاق الخطأ ValueError.

وضعت هذه القيود بصورة متعمّدة وذلك لتأكيد فكرة مفادها أنّه قد يكون بإمكان بعض خوارزميات معالجة النصوص أن تتعامل مع البيانات الثنائية إلّا أنّ الحال لا يكون كذلك دائمًا؛ فقد يؤدي معالجة البيانات الثنائية غير المرمّزة بالترميز ASCII بواسطة خوارزميات التعامل مع النصوص إلى تدمير البيانات.

البايتات هي المُقابل غير القابل للتّغيير (immutable) لمصفوفات البايتات القابلة للتّغيير، وللبايتات نفس التّوابع والعمليّات (التي لا يُمكن لها أن تُغيّر من الكائن) التي تملكها مصفوفات البايتات.

الدالة bytes()‎

يمكن استخدام الدالة bytes()‎ كصيغة بديلة لتعريف البايتات:

bytes(10)        # كائن بايتات فارغ وله طول محدّد
bytes(range(20)) # باستخدام مدى من الأعداد الصحيحة

طريقة استعمال المُعاملات مع الدالة bytes()‎ هي نفسها طريقة استعمال مُعاملات الدّالة bytearray()‎ .

مصادر