Raw Big-Endian Değerlerini Python'de Nasıl Dönüştürürsünüz

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

Adım 2: Gerekli Sınıfları İçe Aktarın

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

Adı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.data

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

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

Ayrıca Bakınız

 Türkçe