Descrierea formatului tga

Descrierea formatului datelor stocate

Rețineți că aici folosim variabila nesemnată. Valoarea stocată în BlockInfo poate fi mai mare de 128 - valoarea maximă pentru o variabilă de tip CHAR.







Pentru a afla ce informații se află aici, trebuie să verificați starea primului bit din variabila BlockInfo

De ce 128? Să ne uităm la codul său binar

După cum puteți vedea, la început există o unitate, iar în operația "AND", orice zero se suprapune unei unități, iar o unitate cu unitate va da una,
așa că dacă statul BlockInfo a fost de exemplu

Că după operație Și în variabila WhatItIs va fi asta

Asta este, este clar că vom obține starea primului pic

Și dacă BlockInfo era egal

Asta după operație Și în variabila WhatItIs ar fi

Adică, în primul bit nu mai este 1 a 0 :))

Deci, vom continua.

După ce verificăm că pentru stat avem primul bit, vom putea afla informații despre ce date ne sunt date:
Dacă starea primului bit este egală cu una, atunci acesta este un pachet de date
Dacă starea primului bit este zero, atunci acesta este datele neambalate
EXEMPLU:

În primul bloc de paranteze, datele împachetate, în cel de-al doilea bloc de paranteze, sunt despachetate.







În timp ce am înțeles doar primul bit, și într-un octet există 8, dar din moment ce unul deja a fost folosit, atunci avem doar 7. Ce să facem cu ei? Și pentru ceea ce sunt necesare și cum să cunoască starea lor la o dată?

Restul de 7 biți stochează numărul de pixeli-1 care merg după citirea variabilei noastre cu un singur octet. Atunci voi explica totul.

Pentru a ști ce număr este stocat în aceste 7 biți, vom face tot ce sa făcut la început, doar în loc de

În sistemul zecimal, acest număr este egal cu 127. Deci, pentru a afla numărul de pixeli, trebuie să faceți următoarele:
NumPixels = BlockInfo 127

Acum știm cum sunt stocate datele noastre și câte ele trebuie procesate, să vedem ce sa întâmplat:

Deci, să începem să discutăm datele PACKED și NU ambalate.

După ce primul octet primește informații despre un singur pixel și apoi trebuie să știi câte biți merg la un pixel
Dacă avem 24 de biți pe pixel, atunci trebuie să citim 3 octeți (24/8 = 3), iar dacă 32 de biți sunt 4 octeți
După ce citim aceste 24 sau 32 de biți, trebuie doar să închidem cât mai mulți pixeli în gama noastră de pixeli, așa cum sunt scrise în variabila NumPixels

Puteți întreba de ce am adăugat o unitate la variabila - acest lucru se întâmplă deoarece atunci când eliminăm numărul de pixeli, valoarea pe care o obținem este întotdeauna mai mică cu una, aceasta se face pentru că avem doar 7 biți, ar fi 8 nu am adăuga nimic.

2. Datele despachetate

Cu datele neambalate, informațiile sunt stocate în mod succesiv pentru fiecare pixel, adică dacă variabila NumPixels avea o valoare de 20, atunci am avea nevoie să citim 20 de pixeli. Asta este, citiți doar informațiile despre pixeli și tot.

După cum puteți vedea totul este foarte simplu și simplu.

Acesta este exemplul complet:







Articole similare

Trimiteți-le prietenilor: