Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/10/2006, 18h39   #1
Modérateur
 
Avatar de ToTo13
 
Homme Guillaume
Chercheur en informatique
Inscription : janvier 2006
Messages : 4 404
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 33
Localisation : France

Informations professionnelles :
Activité : Chercheur en informatique
Secteur : Santé

Informations forums :
Inscription : janvier 2006
Messages : 4 404
Points : 5 266
Points : 5 266
Par défaut La commande wc -m petit souci

Bonjour,

je souhaitais lire une image pgm avec un soft java, mais j'ai eu un souci de EOF. J'ai donc fais une petite vérification :

- Les image pgm ont cette forme :
Code :
1
2
3
4
5
6
7
 
P5
#des commentaires
512 512
#des commentaires
255
jfgiormeztufeormtuerl456789r!uez!eliqf elfi
Autrement dis :
- un type : P5
- largeur et hauteur : 512 512
- un niveau maximum de gris : 255
- largeur*hauteur caractères.

J'ai donc fait un wc -m pour savoir combien il y avait de caractères dans l'image suivante : abe j'ai obtenu : 262178 caractères
Puis j'ai enlevé les caractères, donc je n'ai laissé que l'entête et j'ai obtenu : 34 caractères
J'ai alors enlevé l'entête et compté le nombre de caractères et j'ai obtenu : 262139 caractères.

Pourquoi ai je une différence de 5 caractères quand je décompose l'image ?
J'ai répété plusieurs fois l'opération pour m'assurer que je n'avais pas fait d'erreur.

Est ce que quelqu'un sait pourquoi ???

merci...
__________________
Consignes aux jeunes padawans : une image vaut 1000 mots !
- Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe correcteur orthographique pour FiReFox), mettre les ACCENTS et les BALISES => ECRIRE clairement et en Français tu DOIS.
- Le coté obscur je sens dans le MP => Tous tes MP je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
- ton poste tu dois marquer quand la bonne réponse tu as obtenu.
ToTo13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2006, 18h50   #2
Modérateur
 
Avatar de ggnore
 
Inscription : juillet 2004
Messages : 2 246
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : juillet 2004
Messages : 2 246
Points : 1 903
Points : 1 903
Certaines valeurs ascii ne sont pas écrivables. Ceux sont des valeurs qui sont en dessous de 30 si je me souviens.

Une image est un fichier binaire : il n'est pas traité comme un fichier texte quand il est interprété.

Si tu manipules un fichier binaire comme si il était composé de caractères, tes outils peuvent rencontrer des problèmes d'interprétation car ils doivent travailler avec des valeurs pour lesquels ils n'ont pas été faits.

C'est une piste
__________________
Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
ggnore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2006, 13h13   #3
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
Je ne comprend pas bien ce que tu veut faire mais si tu doits compter le nombre de caractere d'un fichier binaire utilise "od"
genre :
Code :
1
2
 
od -x mon_fichier | wc -ml
le nombre d'octet est la difference ntre le nombre de ligne+1 et le total sortie par wc.

le plus simple et quand même un "ls -l" voir un "stat".......
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2006, 18h35   #4
Modérateur
 
Avatar de ToTo13
 
Homme Guillaume
Chercheur en informatique
Inscription : janvier 2006
Messages : 4 404
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 33
Localisation : France

Informations professionnelles :
Activité : Chercheur en informatique
Secteur : Santé

Informations forums :
Inscription : janvier 2006
Messages : 4 404
Points : 5 266
Points : 5 266
Bonjour,

une image PGM n'est pas codé entièrement en binaire.
L'entete est du texte et le corp est composé de caractères représentant une valeur binaire.

En C on peut tout écrire comme valeur à l'aide de la fonction fwrite et réciproquement tout lire avec fread. Les autres fonction connaissent certaines difficultés pour les valeur comme 13 ('\n') ou 10 ('\t').

En revanche, il semblerait que wc ne lise pas tout...
__________________
Consignes aux jeunes padawans : une image vaut 1000 mots !
- Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe correcteur orthographique pour FiReFox), mettre les ACCENTS et les BALISES => ECRIRE clairement et en Français tu DOIS.
- Le coté obscur je sens dans le MP => Tous tes MP je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
- ton poste tu dois marquer quand la bonne réponse tu as obtenu.
ToTo13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2006, 21h42   #5
Membre Expert
 
Avatar de 2Eurocents
 
Inscription : septembre 2004
Messages : 2 180
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : septembre 2004
Messages : 2 180
Points : 2 442
Points : 2 442
J'aurai tendance à me méfier de wc -m pour un fichier contenant des données binaires. wc -c me paraît plus fiable ...

Maintenant, en toute logique, la partie "image" du fichier fait 512 x 512 pixels, soit 262144 octets. Toute valeur différente dénote soit un fichier corrompu, soit une erreur de manipulation lors de la séparation.

Le fichier, en tout, fait 262178 octets.

L'entête doit donc faire 262178 - 262144 = 34 octets.

La valeur totale et la longueur de l'entête correspondant, tu as du te tromper lors de la séparation.

Je crois que ton éditeur n'a pas supporté les données binaires et en a supprimé quelques caractères entre la lecture et l'écriture du bloc de données.
__________________
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
2Eurocents est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 10h59   #6
Modérateur
 
Avatar de ToTo13
 
Homme Guillaume
Chercheur en informatique
Inscription : janvier 2006
Messages : 4 404
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 33
Localisation : France

Informations professionnelles :
Activité : Chercheur en informatique
Secteur : Santé

Informations forums :
Inscription : janvier 2006
Messages : 4 404
Points : 5 266
Points : 5 266
Bonjour,

j'ai émis cette hypothèse, mais cela me semble tout de même bizarre. J'ai bien compté 34 caractères supprimés...
__________________
Consignes aux jeunes padawans : une image vaut 1000 mots !
- Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe correcteur orthographique pour FiReFox), mettre les ACCENTS et les BALISES => ECRIRE clairement et en Français tu DOIS.
- Le coté obscur je sens dans le MP => Tous tes MP je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
- ton poste tu dois marquer quand la bonne réponse tu as obtenu.
ToTo13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 11h36   #7
Membre Expert
 
Avatar de 2Eurocents
 
Inscription : septembre 2004
Messages : 2 180
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : septembre 2004
Messages : 2 180
Points : 2 442
Points : 2 442
Citation:
Envoyé par ToTo13
j'ai émis cette hypothèse, mais cela me semble tout de même bizarre. J'ai bien compté 34 caractères supprimés...
Moi, ça ne me choque pas ... tu supprimes 34 caractères, Ok, mais si ton éditeur rencontre des caractères qu'il ne sait pas gérer, il peut en dégager aussi ...

Si tu veux vraiment être sûr de ne dégager que les 34 premiers caractères, fais le avec une commande de copie binaire, plutôt qu'un éditeur. Regarde ce que donne cette commande :
Code :
dd if=abe.pgm of=image_abe.truc ibs=1 skip=34
Je parie sur une taille de image_abe.truc à 262144 octets.
__________________
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
2Eurocents est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 13h08   #8
Modérateur
 
Avatar de ToTo13
 
Homme Guillaume
Chercheur en informatique
Inscription : janvier 2006
Messages : 4 404
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 33
Localisation : France

Informations professionnelles :
Activité : Chercheur en informatique
Secteur : Santé

Informations forums :
Inscription : janvier 2006
Messages : 4 404
Points : 5 266
Points : 5 266
Bonjour,

bien vu !!!
Effectivement ça marche maintenant...

Merci
__________________
Consignes aux jeunes padawans : une image vaut 1000 mots !
- Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe correcteur orthographique pour FiReFox), mettre les ACCENTS et les BALISES => ECRIRE clairement et en Français tu DOIS.
- Le coté obscur je sens dans le MP => Tous tes MP je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
- ton poste tu dois marquer quand la bonne réponse tu as obtenu.
ToTo13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h06.


 
 
 
 
Partenaires

Hébergement Web