Pentru numere mici pot sa iti zic ca NU este nici o alta metoda.
Daca ai o multime de numere, de exemplu o imagine si fiecare numar este o culoare, e mult mai eficient sa folosesti o encodare (o compresie) ce in principiu face urmatoarele:
- numara fiecare "componenta" adica valoare.
- valorile ce se intalnesc cel mai rar le grupezi mai intai, si valoarea de la stanga o pui la stanga arborelui cea mai mare la dreapta arborelui.
http://en.wikipedia.org/wiki/Huffman_coding
E relativ mult de explicat si nu stiu daca exact asta cauti. Dar de exemplu daca stii ca mai mult de 50% din valori sunt o valoare, de exemplu "0", este foarte eficient sa salvezi doar "un bit" pentru ea, salvand 7/8 din spatiul folosit.
Alta metoda e sa salvezi numarul si de cate ori se repeta. La fel, daca se repeta de multe ori, se poate salva spatiu:
Pentru numarul: 12222444442
salvezi ca: 11425412
Si se citeste cam asa:"o data: 1, de 4 ori: 2, de 5 ori: 4, o data: 2 ".
Multumesc de raspuns.
Sincer nu este pentru o imagine ci as vrea sa salver un sir de numere cunoscut ca lungime si ce contine numere mai mici de 100 sub forma unui singur numar de preferat mai mic decat 4294967295 iar siru nu cred ca va depasi vreodata lungimea de 100 de numere.
Cu numarul 4294967295 poti tine maxim 32 valori de 0 si 1
Daca stii ca multe numere se repeta iti recomand forma aceea encodata:
"Pentru numarul: 12222444442
salvezi ca: 11425412"
Ca "optimizare" poti ca sa faci primul numar sa plece de la zero, si sa aduci 1 la secventa, asa o sa ai in loc de la 1 la 9 repetitii, de la 1 la 10 repetitii.
Daca stii sa te joci cu bitii, iti pot explica Huffman. Dar personal nu cred ca merita munca daca nu folosesti o poza sau ceva de genul.
Din pacate fiecare numar este unicat sigur si nu se repeta
desi despre Huffman am sa ma mai documentez sigur o sa imi foloseasca