Accueil > Forum > > > > savoir l'état des bits d'un octet
savoir l'état des bits d'un octet
samedi 18 novembre 2006 à 11:25:08 |
savoir l'état des bits d'un octet

nardelmouk
|
souhaitant faire un petit algorithme de compression, j'avais vu que touts les lettres de l'alphabet ne prenaient pas plus de 5 bits d'un octet donc je vous fait un exemple : a= 00000 , b = 00001 etc ... donc "abcd" ferait 000000000100010000110000 soit 3 octet. bon ça , c'est pour la compression. mais après , comment faire pour que quand je prend un octet dans le fichier, je puisse voir les bits qu'il y a pour retrouver les caracteres ? merci d'avance.
|
|
samedi 18 novembre 2006 à 11:54:18 |
Re : savoir l'état des bits d'un octet

casy
|
Il faut simplement que tu fasse l'inverse de ce que tu fait à la compression.
Il faut que tu isole chaque groupe de 5 bits (dont certains seront répartis sur 2 octets). Ensuite il te faut comme à la compression, une table de correspondance entre lecaractère réel et le caractère comprimé.
---- Sevyc64 (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
|
|
samedi 18 novembre 2006 à 12:05:53 |
Re : savoir l'état des bits d'un octet

nardelmouk
|
ok, merci mais juste un autre petit truc, coment faire pour que quand je prends chaque octet, au niveau programmation, concaténer dans une string tous les bits ? merci pour l'autre réponse
|
|
samedi 18 novembre 2006 à 12:17:30 |
Re : savoir l'état des bits d'un octet

casy
|
VB ne sait pas travailler sur les bits, il ne travaille que sur des octets. Il faut donc faire des masques, des décalages, ...
Pour ton exemple : Pour le premier octet, il sera égal aux 5 bits du premier caractère compressé auquels tu devra ajouter (addition) les 3 premiers bits de second caractère (donc masque) décalé (décalage ou multiplication) de 5 bits. Le second octet prendra les 4eme et 5eme bits (donc masque) du second caractère, décalés pour venir en premier et second bit + les 5 bits du 3eme caractere décalés pour venir à partir du 3eme bit, + le premier bit du 4eme caractère dcalé pour venir en 8eme place.
Même si ton algo parait simple, la mise à oeuvre peut paraitre complexe. E toi de bien y réfléchir pour quelle ne devienne pas compliquée.
---- Sevyc64 (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
|
|
samedi 18 novembre 2006 à 13:24:01 |
Re : savoir l'état des bits d'un octet

jack
|
Réponse acceptée !
Salut Reprenons les bases. D'ailleurs, je te conseille de jeter un oeil sur une ou des sources qui parlent de conversions de Base qui manupilent les Bytes (ou Octets) et les Bits.
Un Octet est composé de 8 bits (numérotés de 0 à 7). Un Octet, dans sa représentation décimale peut prendre des valeurs de 0 à 255, ou 00 à FF en Hexa. Pour écrire le Bit n°X d'un Octet, il te suffit de calculer 2^X (avec X de 0 à 7) Pour lire le Bit n°X d'un Octet, il faut tester si Octet And 2^X = Octet
Ensuite, tu parles de String (Chaine). Les Strings sont composés de caractères. Chaque caractère est un Octet.
Donc, dans ton cas où tu veux coder les caractères sur 5 bits et pas 8, il faut abandonner la représentation alphabétique des caractères d'une String et travailler uniquement sur les valeurs numériques des Octets. Dans ton exemple, si tu veux coder 'abc', cela te donnera la suite de 15 Bits suivants (la représentation standard des bits est toujours avec le bit de poids faible à droite et le bit de poids fort à gauche) : Séparés par paquet de 5 bits : 000100000100000 La même chose en paquets de 8 bits (1 Octet) : x0001000 00100000 Le problème que tu auras, c'est de passer les 3 premiers bits du 'b' sur le premier octet et les 2 restant au début de l'octet suivant. Le x correspond au premier bit du prochain caractère (même punition). Ca va pas être du gateau, mais faisable. Il faudra prendre en compte aussi que, à la relecture, tu ne pourras lire que des Octets, donc des multiples de 8, donc les derniers Bits seront peut-être inutilisés. Dans le pire des cas, tu n'auras qu'un seul Bit intéressant dans le dernier Octet, les 7 suivants seront restés à 0. Or, dans ta table de caratères, '00000' représente la lettre 'a'. Il faut donc que tu sacrifies le '00000' pour qu'il ne représente rien et commencer le 'a' à '00001' sinon, tu risques de retrouver des 'a' fantômes à la fin.
En VB, il faut impérativement que tu travailles avec des tableaux de Byte (Octet) pour pouvoir changer d'octet de manière numérique. Il va falloir : - décortiquer la chaine d'origine pour retrouver la représentation des 5 bits en fonction de la lettre rencontrée. Un tableau initialisé au début de ton projet devrait faire l'affaire - définir ne nombre d'Octets (de 8 bits) dont tu auras besoin : Il te suffit de calculer : NombreCaratères * 5 / 8 et l'arrondir à la valeur supérieure - Ecrire : Ca va être un astucieux mélange de boucle For-Next et d'incrémentation.
Conclusion : Oui, c'est faisable, mais avant tout, il faut que tu te familiarises avec l'écriture et la lecture des Bits dans un Octet sur des exemples simples avant de te lancer dans ce programme. Fabrique-toi et met au point ces procédures : Sub BitEcrit (monOctet As Byte, NoBit As Integer, Etat As Boolean) Sub BitLit (monOctet As Byte, NoBit As Integer, Etat As Boolean) Fonction dans laquelle tu écriras/liras à 0 ou 1 (Etat) le Bit n° 'NoBit' (de 0 à 7) dans l'octet 'monOctet' Aide toi de la calculette Windows en mode Scientifique pour vérifier ton programme. Quand tu auras créé ces fonctions, tu auras 25% de ton projet de fait !
PS : Projet intéressant mais prévois de l'aspirine !
Vala Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
|
|
Cette discussion est classée dans : octet, état, compression, bits
Répondre à ce message
Sujets en rapport avec ce message
Lire un fichier Bits par Bits et Non octets Par octet [ par greg13 ]
Je me demande comment je peux faire pour lire tout les bits d'un fichier(Ex : 01001011 ...)MerciGreg
Aide pour la compression [ par MaxSoldier ]
Bonjours ! Je vous explique mon problème. Je fais une logiciel de compression. POur compresser, j'utiliser un algo semblable à celui d'huffman. Par ex
sql [ par Marie15 ]
Bonjour,est ce que quelqu'un connaît comment récupérer le paramétre d'une requête paramétrée pour l'utiliser aprés dans le code VBA.par exemple l'affi
Compression unicode. [ par JPMCDVI ]
Bonjour, J’ai une base de donnée créée. Je rajoute en code une table avec des champs. Pour chaque champ, je modifie le nombre de caractères désirés ai
Erreur 20532 au lancement d'un état crystal report 10 [ par Dghi ]
Bonjour,Voila j'ai un problème avec les éditions d'états sous XP (SP3).Sur certain PC j'obtiens l'erreur 20532, qui correspond à priori à un problème
extraire octets d'un fichier binaire de maniere optimisée [ par fatmaboule ]
salut voici mon probleme: je souhaite extraire les octets d'un fichier binaire. Le volume de ces fichiers est acceptable (jusqu'a 10 Mo) le but e
intégrer un état crystal reports ds vb6 [ par bidossessy ]
koment associer segate crystal reports à vb6 sans problèmes. qd je fait ajouter un état crystal reports ds vb6 il m'affiche"la connexion n'est pa enco
état et objet OLE [ par quinoa1 ]
Bonjour, j'ai créé un état qui contient des objets OLE Word dans un champ nommé "description" et des images photoshop dans un champ "situation". Qu'il
Compression ou sauvegarde d une image au format IPictureDisp [ par greedium ]
Bonjour Dans mon application, je dessine une image (un plan en bitmap) qui est stockée au format IPictureDisp. Le problème quand je souhaite l'expor
Aperçu et impression d'un état Crystal Reports 11 [ par badseyar ]
Bonjour, j'ai créé un état sous Crystal Reports 11 Developer Edition. sous VB6, j'essaie d'en faire l'aperçu et l'impression, sans succès. j'ai t
Livres en rapport
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|