Hur man konverterar råa big-endian-värden i Python
PSD-filer lagrar de flesta binära fält i big-endian-byteordning. När du behöver avkoda ett rått fält själv — till exempel från en bildresurs råa byte — läser BigEndianBitConverter ett big-endian 32-bitars heltal direkt från en bytearray.
Steg-för-steg-guide
Steg 1: Installera paketet
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:$PYTHONPATHSteg 2: Importera nödvändiga klasser
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.bigendianbitconverter import BigEndianBitConverterSteg 3: Läs en resurs råa byte
PsdImage.parsed_resources returnerar de lägre nivåns UnknownResource objekt, var och en exponerar den råa nyttolasten via data:
image = PsdImage.load("input.psd")
for resource in image.parsed_resources:
raw = resource.dataSteg 4: Avkoda ett 32-bitars big-endian-värde
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) läser 4 byte som börjar vid offset och kombinerar dem mest signifikanta byte först.
Vanliga problem och lösningar
IndexError vid anrop to_int32. Bytearrayen måste ha minst 4 byte tillgängliga med start vid offset — kontrollera len(byte_array) >= offset + 4 innan du anropar.
Värdena ser byte-swapped ut. Bekräfta att du inte av misstag använder en little-endian-omvandling någon annanstans i din egen kod — PSD-resurs- och huvudfält är konsekvent big-endian, vilket är exakt vad BigEndianBitConverter förutsätter.
Vanliga frågor
Stöder BigEndianBitConverter andra heltalsstorlekar?
I den här FOSS-byggnaden tillhandahåller BigEndianBitConverter endast to_int32 — för 16-bitars eller 64-bitars big-endian-värden, avkoda bytena manuellt med Python s inbyggda int.from_bytes(data, byteorder="big").
Behöver jag detta för normal dokumentredigering?
Nej — BigEndianBitConverter är ett lågnivåverktyg för att arbeta med råa byte du har erhållit själv (till exempel från en oigenkänd bildresurs). Vanlig inläsning, redigering och sparande (se Arbeta med kärnan API) kräver den aldrig direkt.