principe de base de compression.
Publié : ven. 18/mai/2012 20:37
...............
Forums PureBasic - Français
https://www.purebasic.fr/french/
Ca m'apprendra à pas lire les posts en entier , j'étais en train d'écrire que ton algo était pourrimon algo , ne gere pas toute la 10aine de répétitions : "100000000001" , car ça va donner "11001" , la décompression ne se fera pas
j'ai pas cherché a reglé ce probleme , ceci est un exemple
+1G-Rom a écrit :Ca m'apprendra à pas lire les posts en entier , j'étais en train d'écrire que ton algo était pourrimon algo , ne gere pas toute la 10aine de répétitions : "100000000001" , car ça va donner "11001" , la décompression ne se fera pas
j'ai pas cherché a reglé ce probleme , ceci est un exemple![]()
ceci sera decodé comme etant 4 fois "0"- Dobro, l'exemple 140 peut être décodé en 10000 ou 00000000000000 (quatorze zéros), non ?
oui certain Algo marche bien ( le Lzh , le Arc , le Pc1 etc ... )cherche algo de haufman ou un truc du genre, c'est simple à mettre en place.
Ca parait magique mais tu dois retomber sur terre. Transformer le binaire "1000011111" en decimal "14051" est tout sauf de la compression. Et puis ca ne veux rien dire "14051". Il pourrait s'agir de 4051 "1". Il faut y integrer une regle pour qu'on ne se trompe pas. Et la, la compression deviens de l'expension...Dobro a écrit :si j'en crois certain topic , je devrai etre millionaire![]()
voici un code qui prends un nombre binaire et le reduit en taille
ceci est une introduction a la compression ..
l'algo est le suivant
je prends un chiffre binaire :
"1000011111"
si il n'y a qu'un seul "1" ou qu'un seul "0" je l'ecris tel quel
si il y a plusieurs "0" ou plusieurs "1" qui se suivent , je les comptes , et j'ecris d'abord le nombre, puis le "0" ou le "1"
avec le binaire ci dessus le résultat donne
"14051"
car il y a un "1" ---> donc "1"
il y a quatre "0" ---> donc "40"
il y a cinq "1" -----> donc "51"
ce qui donne bien "1 40 51" ---> "14051"
le binaire qui avait 10 caractères donne une chaine de 5 caractères ( compression 50% ) !
justement, tu mélanges les contextes. Ta « compression » ne marche que si on le fait sur une chaine de caractères ne contenant que des 0 et 1.Dobro a écrit :j'ai aussi précisé , ( pour le contexte binaire ) , que dans certains cas de figure
100 en binaire ça donne 0x04 (qui est un caractère non imprimable), alors que pour ta compression tu l'utilises en tant que chaine de caractères ce qui donne en binaire : 0011 0001 0011 0000 0011 0000. soit 0x31 0x30 0x30.Dobro a écrit :car pour un binaire du genre "100" ; ça va donner "120"