Compression d'une chaine de caractère.

juli1m Messages postés 14 Date d'inscription vendredi 6 février 2004 Statut Membre Dernière intervention 14 février 2005 - 13 mai 2004 à 11:45
juli1m Messages postés 14 Date d'inscription vendredi 6 février 2004 Statut Membre Dernière intervention 14 février 2005 - 14 mai 2004 à 09:21
bonjour,

j'aimerais pouvoir compresser une chaine de 9 caractères (constituée uniquement de chiffres : 130405301), et j'aimerais que, une fois compressée, je puisse decompresser pour pouvoir relire la chaine initiale.

j'aimerais, de plus, si c'est possible que cette compression soit parametrable (que je puisse choisir si je veux obtenir que des chiffres, que des lettres, ou les 2). Et aussi que les caractères une fois compressés rstent imprimables.

Bon, je sais, j'en demande beaucoup, mais, bon, si vous avez ne serait-ce qu'un soupçon d'idée, ça pourrait évetuellement m'aider, ça fait une semaine que je cherche et je n'i rien trouvé, j'ai esayé aussi quelques bidouilles, mais rien de très concluant.

Merci d'avance...

4 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
13 mai 2004 à 13:58
En te lisant, j'ai un doute ...
T'es sûr que tu veuc compresser ta chaine ? Tu ne veux pas plutôt la crypter ?

Manu
0
juli1m Messages postés 14 Date d'inscription vendredi 6 février 2004 Statut Membre Dernière intervention 14 février 2005
13 mai 2004 à 14:11
c'est vrai, ça ressemble beaucoup à du cryptage, mais je n'ai pas trouvé d'algo de cryptage qui me compresse une chaine et surtout, avec des caractères bien imprimables (même en utlisant le base64 pour avoir des caractères bien lisibles, d'autant plus que le base64 avec 1 caractère, il en fait 2).

ce qu'il faut, en fait, c'est vraiment de compresser la chaine au max, car les infos que je veux compresser ne seront pas toutes seules au final. elles devront tenir dans une autre chaine de longueur fixe avec d'autres infos, et ces infos, je veux en garder un max.
0
Vb Lover Messages postés 221 Date d'inscription vendredi 30 novembre 2001 Statut Membre Dernière intervention 13 février 2010 5
13 mai 2004 à 22:29
ça ne doit pas être trop compliqué. Je ne suis pas sûr d'avoir compris si ta chaîne a une longueur de 9, ou si elle peut être plus longue mais elle est composée que de chiffres.

Bref, voici une méthode générale pour un texte composé que de chiffres :

1) il y a 10 chiffres, donc il te faut 4 bits pour coder chacun. (ici, en fait, tu pourrais gagner un peu de place, parce que 2^4=16, et donc tu "perds" 6 symboles. Tu pourrais grouper les chiffres par 3 et utiliser 5 bits).

2) Admettons que tu utilises 4 bits pour coder 1 chiffre, avec 1 caractère de 8 bits, tu gagnes donc environ la moitié de place, mais il faut t'arranger pour que tes caractères soient "lisibles"

3) Si tu as uniquement 9 caractères dans ta chaîne, alors tu utilises le fait : 2^30 = 1'073'741'824 > 999'999'999
il te faut donc 4 octets pour compresser ta chaîne. le problème est toujours de tomber sur des lettres "imprimables"

etc etc...

VB Lover
0
juli1m Messages postés 14 Date d'inscription vendredi 6 février 2004 Statut Membre Dernière intervention 14 février 2005
14 mai 2004 à 09:21
Merci VB Lover, je vais essayer de bien exploiter cette solution.
0
Rejoignez-nous