كيفية تحويل القيم الخام ذات النهاية الكبيرة في Python
تخزن ملفات PSD معظم الحقول الثنائية بترتيب البايتات big-endian. عندما تحتاج إلى فك تشفير حقل خام بنفسك — على سبيل المثال، من بايتات المورد الصوري الخام — BigEndianBitConverter يقرأ عددًا صحيحًا 32-بتًا big-endian مباشرةً من مصفوفة بايتات.
دليل خطوة بخطوة
الخطوة 1: تثبيت الحزمة
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-Python.git
cd Aspose.PSD-FOSS-for-Python
# No packaging manifest is published yet -- run from this folder,
# or add it to PYTHONPATH:
export PYTHONPATH=$PWD:$PYTHONPATHالخطوة 2: استيراد الفئات المطلوبة
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.bigendianbitconverter import BigEndianBitConverterالخطوة 3: قراءة البايتات الخام للمورد
PsdImage.parsed_resources يُعيد كائنات UnknownResource ذات المستوى الأدنى، كل منها يُظهر الحمولة الخام عبر data:
image = PsdImage.load("input.psd")
for resource in image.parsed_resources:
raw = resource.dataالخطوة 4: فك تشفير قيمة 32-بت Big-Endian
data = bytes([0x00, 0x00, 0x04, 0x10]) # example 4-byte big-endian field
value = BigEndianBitConverter.to_int32(data, 0)
print(f"Decoded value: {value}") # 1040to_int32(byte_array, offset) يقرأ 4 بايتات بدءًا من offset ويجمعها بترتيب البايت الأكثر أهمية أولاً.
المشكلات الشائعة والحلول
IndexError عند الاستدعاء to_int32. يجب أن تحتوي مصفوفة البايتات على ما لا يقل عن 4 بايتات متاحة بدءًا من offset — تحقق len(byte_array) >= offset + 4 قبل الاستدعاء.
القيم تبدو مبدلة بايتياً. تأكد من أنك لا تستخدم عن طريق الخطأ تحويل little-endian في مكان آخر في كودك الخاص — موارد PSD وحقول الرأس تُعامل باستمرار كـ big-endian، وهذا هو بالضبط ما BigEndianBitConverter يفترض.
الأسئلة المتكررة
هل يدعم BigEndianBitConverter أحجام أعداد صحيحة أخرى؟
في هذا الإصدار المفتوح المصدر، يوفّر BigEndianBitConverter to_int32 فقط — للقيم ذات 16-بت أو 64-بت بترتيب بايت كبير-النهاية، فكّ تشفير البايتات يدويًا باستخدام Python المدمج int.from_bytes(data, byteorder="big").
هل أحتاج هذا لتحرير المستندات العادي؟
لا — BigEndianBitConverter هي أداة منخفضة المستوى للعمل مع البايتات الخام التي حصلت عليها بنفسك (على سبيل المثال، من مورد صورة غير معترف به). التحميل والتحرير والحفظ المعتاد (انظر العمل مع النواة API) لا يتطلبها مباشرةً.