Ett .pcx bilde består av en header (128 byte), RLE komprimert data, og en palette (768 byte). Headeren består av følgende:
Signatur (1 byte, 10 = ZSoft .pcx)
Versjon (1 byte, 5 = versjon 3.0)
Enkoding (1 byte, 1 = .pcx RLE)
Bits per pixel (1 byte)
X min (2 bytes)
Y min (2 bytes)
X max (2 bytes)
Y max (2 bytes)
Horisontal oppløsning (2 bytes)
Vertikal oppløsning (2 bytes)
Palette (48 bytes, brukes kun for 16-fargers bilder)
Reservert (1 bytes)
Antall fargeplan (2 bytes)
Antall bytes per linje (2 bytes)
Palette type (2 bytes)
Reservert (58 bytes)
Først leser du inn headeren og sjekker at signaturen og versjonen stemmer. Deretter regner du ut bredden (X max + 1 - X min) og høyden (Y max + 1 - Y min). Når du har gjordt dette, leser du inn selve bildet... dekomprimering av RLE virker på følgende måte: Du leser inn en byte, og sjekker om de to mest viktige bitsene er satt til 1 (11xxxxxx). Dersom de er det, maskerer du de ut (00111111), og sitter igjen med antall ganger neste byte skal repeteres (i arrayen). Dersom disse bitsene ikke er satt til 1, putter du bare dataen rett inn i arrayen. Når du har lest inn hele bildet leser du inn paletten (rgb). Tror dette skulle virke... Er en stund siden jeg har kødda med .pcx filer og greier.