Cara Mengonversi Nilai Raw Big-Endian di Python

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:$PYTHONPATH

Langkah 2: Impor Kelas yang Diperlukan

from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.bigendianbitconverter import BigEndianBitConverter

Langkah 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.data

Langkah 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}")  # 1040

to_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.

Lihat Juga

 Bahasa Indonesia