Hogyan konvertáljunk nyers big-endian értékeket a Python-ban
A PSD fájlok a legtöbb bináris mezőt big-endian bájtrendben tárolják. Amikor magadnak kell dekódolnod egy nyers mezőt — például egy képernyő erőforrás nyers bájtjaiból — a BigEndianBitConverter közvetlenül egy byte tömbből olvas be egy big-endian 32-bit egész számot.
Lépésről lépésre útmutató
1. lépés: A csomag telepítése
pip install aspose-psd-foss2. lépés: A szükséges osztályok importálása
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.bigendianbitconverter import BigEndianBitConverter3. lépés: Erőforrás nyers bájtjainak beolvasása
PsdImage.parsed_resources visszaadja az alacsonyabb szintű UnknownResource objektumokat, amelyek mindegyike a nyers adatot a data segítségével teszik elérhetővé:
image = PsdImage.load("input.psd")
for resource in image.parsed_resources:
raw = resource.data4. lépés: 32 bites nagy-endian érték dekódolása
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) 4 bájtot olvas a offset címtől kezdve, és a legmagasabb helyiértékű bájt elsőként kombinálja.
Gyakori problémák és megoldások
IndexError híváskor to_int32. A bájt tömbnek legalább 4 bájt áll rendelkezésre a(z) offset — ellenőrizze len(byte_array) >= offset + 4 hívás előtt.
Az értékek bájtcserélteknek tűnnek. Győződj meg róla, hogy a saját kódodban nem használsz véletlenül little-endian átalakítást — a PSD erőforrás és fejlécmezők következetesen big-endianek, ami pontosan azt jelenti, hogy BigEndianBitConverter feltételezi.
Gyakran feltett kérdések
A BigEndianBitConverter támogat-e más egész számméreteket?
Ebben a FOSS buildben a BigEndianBitConverter csak to_int32 biztosít — 16-bit vagy 64-bit big-endian értékekhez dekódold a bájtokat manuálisan a Python beépített int.from_bytes(data, byteorder="big") segítségével.
Szükségem van erre a normál dokumentumszerkesztéshez?
Nem — BigEndianBitConverter egy alacsony szintű segédprogram a nyers bájtokkal való munkához, amelyeket saját magad szereztél be (például egy fel nem ismert képadatforrásból). A tipikus betöltés, szerkesztés és mentés (lásd A Core API használata).