Hogyan konvertáljunk nyers big-endian értékeket a Python-ban

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-foss

2. 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 BigEndianBitConverter

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

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

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

Lásd még:

 Magyar