كيفية تحويل القيم الخام ذات النهاية الكبيرة في Python

كيفية تحويل القيم الخام ذات النهاية الكبيرة في 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}")  # 1040

to_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) لا يتطلبها مباشرةً.

انظر أيضاً

 العربية