Cara Mengonversi Nilai Raw Big-Endian di Python
File PSD menyimpan sebagian besar bidang biner dalam urutan byte big-endian. Ketika Anda perlu mendekode bidang raw sendiri — misalnya, dari byte mentah sumber gambar — BigEndianBitConverter membaca integer 32-bit big-endian langsung dari array byte.
Panduan Langkah demi Langkah
Langkah 1: Instal Paket
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:$PYTHONPATHLangkah 2: Impor Kelas yang Diperlukan
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.bigendianbitconverter import BigEndianBitConverterLangkah 3: Baca Byte Mentah Sumber Daya
PsdImage.parsed_resources mengembalikan objek UnknownResource tingkat lebih rendah, masing-masing mengekspos payload mentah melalui data:
image = PsdImage.load("input.psd")
for resource in image.parsed_resources:
raw = resource.dataLangkah 4: Dekode Nilai 32-Bit 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) membaca 4 byte mulai dari offset dan menggabungkannya dengan urutan byte paling signifikan terlebih dahulu.
Masalah Umum dan Solusinya
IndexError saat memanggil to_int32. Array byte harus memiliki setidaknya 4 byte yang tersedia mulai dari offset — periksa len(byte_array) >= offset + 4 sebelum memanggil.
Nilai tampak byte-swap. Pastikan Anda tidak secara tidak sengaja menggunakan konversi little-endian di tempat lain dalam kode Anda — sumber daya PSD dan bidang header secara konsisten big-endian, yang tepatnya BigEndianBitConverter diasumsikan.
Pertanyaan yang Sering Diajukan
Apakah BigEndianBitConverter mendukung ukuran integer lain?
Dalam build FOSS ini, BigEndianBitConverter hanya menyediakan to_int32 — untuk nilai big-endian 16-bit atau 64-bit, dekode byte secara manual dengan Python’s built-in int.from_bytes(data, byteorder="big").
Apakah saya membutuhkan ini untuk penyuntingan dokumen normal?
Tidak — BigEndianBitConverter adalah utilitas tingkat rendah untuk bekerja dengan byte mentah yang Anda peroleh sendiri (misalnya, dari sumber gambar yang tidak dikenali). Memuat, mengedit, dan menyimpan secara tipikal (lihat Bekerja dengan Core API) tidak pernah memerlukannya secara langsung.