Raw Big-Endian Değerlerini Python'de Nasıl Dönüştürürsünüz
PSD dosyaları çoğu ikili alanı büyük-endian bayt sırasında depolar. Kendi başınıza ham bir alanı çözmeniz gerektiğinde — örneğin, bir görüntü kaynağının ham baytlarından — BigEndianBitConverter bir bayt dizisinden doğrudan büyük-endian 32 bit tam sayı okur.
Adım Adım Kılavuz
Adım 1: Paketi Yükleyin
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:$PYTHONPATHAdım 2: Gerekli Sınıfları İçe Aktarın
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.bigendianbitconverter import BigEndianBitConverterAdım 3: Bir Kaynağın Ham Baytlarını Okuyun
PsdImage.parsed_resources, alt düzey UnknownResource nesnelerini döndürür, her biri ham yükü data aracılığıyla sunar:
image = PsdImage.load("input.psd")
for resource in image.parsed_resources:
raw = resource.dataAdım 4: 32-Bit Büyük-Uçlu Değeri Çöz
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), offset adresinden başlayan 4 baytı okur ve en yüksek anlamlı bayttan başlayarak birleştirir.
Yaygın Sorunlar ve Çözümler
IndexError çağırırken to_int32. Byte array’in, şuradan itibaren en az 4 bayt bulunması gerekir offset — kontrol et len(byte_array) >= offset + 4 çağırmadan önce.
Değerler byte-swapped gibi görünüyor. Kendi kodunuzda başka bir yerde yanlışlıkla little-endian dönüşüm kullanmadığınızdan emin olun — PSD kaynağı ve başlık alanları tutarlı bir şekilde big-endian olup, tam da bunun BigEndianBitConverter varsaydığını.
Sıkça Sorulan Sorular
BigEndianBitConverter başka tamsayı boyutlarını destekliyor mu?
Bu FOSS derlemesinde, BigEndianBitConverter yalnızca to_int32 sağlar — 16-bit veya 64-bit big-endian değerleri için, baytları Python’nin yerleşik int.from_bytes(data, byteorder="big")‘siyle manuel olarak çözümleyin.
Bunu normal belge düzenleme için gerekli mi?
Hayır — BigEndianBitConverter kendi elde ettiğiniz ham baytlarla çalışmak için düşük seviyeli bir yardımcı programdır (örneğin, tanınmayan bir görüntü kaynağından). Tipik yükleme, düzenleme ve kaydetme (bkz. Çekirdek API ile Çalışma) doğrudan gerektirmez.