Jump to content
Che

Ce parere aveti de aceasta metoda de ULTRA arhivare ?

Recommended Posts

Posted (edited)

Ce parere aveti de aceasta metoda super de ULTRA arhivare ?

Ma gandeam mai demult sa fac un arhivator dar intre timp m-am lasat pagubas asa ca m-am gandit sa impart cu voi mtoda la care ma gandeam si eventual sa-mi spuneti ce parere aveti de ea, daca e buna sau nu.

Prin urmare...

Ma gandeam asa, sa citesti fisierul (orice fisier) in hexadecimal, practic va imaginati ca il deschideti intr-un hexeditor.

Apoi m-am gandit asa, programul sa fie aiba undeva definite absolut toate combinatiile luate de cate trei sau de cate patru de hexadecimal (nu pot fi asa multe).

Apoi, fiecarei combinatii de catre 3 (sa zicem ca ne folosim doar de grupe de cate trei, nu si de cate 4) sa-i corespunda un singur character hexadecimal prestabilit.

Practic avem un fisier in hex gen 00 0E DC AE 0B 0C...bla bla bla pe un rand.

Daca programul are prestabilit dinainte ca urmatoarelor combinatii 00 0E DC, precum si AE 0B 0C le corespunde 0E si respective AE (tot niste hex-uri nu neaparat sa se regaseasca in combinatia respective).

rezulta ca randul: 00 0E DC AE 0B 0C...bla bla bla va fi transformat doar in 0E AE...bla bla bla (practic mult mai putine acuma).

Asta ar trbui sa fie nivelul de arhivare 1.

Apoi, daca vrem sa avem si nivelul de arhivare 2 (mai puternica) nu trebuie decat sa rearhivam caracterele hex rezultate anterior 0E AE...bla bla bla si va rezulta un alt rand de caractere in hex si mai scurt si tot asa.

Ce parere aveti ? Credeti ca ar fi eficienta o astfel de arhivare ? Poate o face cineva, nu am si nu cer drepturi de autor.

Edited by Che
Posted (edited)

Tu ai citit ce-ai scris inainte sa confirmi crearea topicului?

Toate combinatiile posibile de n cifre hexa is in numar de 16^n. Si ghici ce? Cea mai mare valoare care tre' s-o stochezi e 0xFF..FF (de n-ori F) - adica (16^n)-1

Tu crezi ca algoritmii de arhivare is asa simplu de dezvoltat incat sa poata gandi orice ametit unul?

Edited by AlStar
  • Active Members
Posted

Nu cred ca se poate face vreodata in viata asta ce ai zis tu acolo. Si daca s-ar putea, ar dura foarte mult. Cum ziceau si cei de mai sus, invata programare ( mai exact arbori Huffman) si nu vei mai gasi utilitatea a ceea ce ai zis tu mai sus.

Arborii Huffman sunt arbori binari folosi?i într-o metod? de compresie a datelor care atribuie fiec?rui caracter (octet) un cod binar a c?rui lungime depinde de frecven?a octetului codificat; cu cât un caracter apare mai des într-un fisier cu atât se folosesc mai pu?ini bi?i pentru codificarea lui. De exemplu, într-un fi?ier apar 6 caractere cu urm?toarele frecven?e:

a (45), b(13), c(12), d(16), e(9), f(5)

Codurile Huffman pentru aceste caractere sunt:

a=0, b=101, c=100, d=111, e=1101, f=1100

Num?rul de bi?i necesari pentru un fi?ier de 1000 caractere va fi 3000 în cazul codific?rii cu câte 3 bi?i pentru fiecare caracter ?i 2240 în cazul folosirii de coduri Huffman, deci se poate realiza o compresie de cca. 25% (în cele 1000 de caractere vor fi 450 de litere 'a', 130 de litere 'b', 120 litere 'c', s.a.m.d).

Fiecare cod Huffman începe cu un prefix distinct, ceea ce permite recunoa?terea lor la decompresie; de exemplu fi?ierul comprimat 001011101 va fi decodificat ca 0/0/101/1101 = aabe. Problema este de a stabili codul fiec?rui caracter in func?ie de probabilitatea lui de apari?ie astfel încât num?rul total de bi?i folosi?i în codificarea unui ?ir de caractere s? fie minim. Pentru generarea codurilor de lungime variabil? se folose?te un arbore binar în care fiecare nod neterminal are exact doi succesori.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...