Fichiers binaire/texte/ascii
Fermé
S
-
26 mars 2002 à 15:16
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 - 27 mars 2002 à 15:44
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 - 27 mars 2002 à 15:44
A voir également:
- Fichiers binaire/texte/ascii
- Caractère ascii - Guide
- Codage binaire - Guide
- Excel cellule couleur si condition texte - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Transcription audio en texte word gratuit - Guide
5 réponses
Bon.
Un bon fichier ASCII standard n'a effectivement aucune valeur supérieure à 7 bits (0...127), mais dans la pratique, on utilise 8 bits (pour coder les caractères accentués par exemple, qui sont absents du code ASCII).
Donc, difficile de les différencier.
Enfin, humainenement, ça saute aux yeux.
Pour un logiciel, c'est moins évident.
Une astuce pour différencier: Faire des statistiques du fichier.
Dans un fichier texte:
- on trouvera en grande majorité des codes < 128.
- on trouvera beaucoup d'espace (code 32).
- on trouvera assez souvent des retours à la ligne (10, 13 ou 13+10 selon la provenance du fichier texte).
- selon la langue, certains caractères se trouveront plus souvent ('e' par exemple).
- on ne trouvera pas généralement pas d'octets de valeur 0 au milieu du fichier.
- les codes ascii inférieurs à 32 sont très rares, en dehors de 9 (tabulation), 10/13 (retours à la ligne) et 12 (saut de page).
Je pense qu'on doit pouvoir s'en sortir avec ça et bricoler une routine capable de discerner les deux avec un assez bon pourcentage de réussite.
Un bon fichier ASCII standard n'a effectivement aucune valeur supérieure à 7 bits (0...127), mais dans la pratique, on utilise 8 bits (pour coder les caractères accentués par exemple, qui sont absents du code ASCII).
Donc, difficile de les différencier.
Enfin, humainenement, ça saute aux yeux.
Pour un logiciel, c'est moins évident.
Une astuce pour différencier: Faire des statistiques du fichier.
Dans un fichier texte:
- on trouvera en grande majorité des codes < 128.
- on trouvera beaucoup d'espace (code 32).
- on trouvera assez souvent des retours à la ligne (10, 13 ou 13+10 selon la provenance du fichier texte).
- selon la langue, certains caractères se trouveront plus souvent ('e' par exemple).
- on ne trouvera pas généralement pas d'octets de valeur 0 au milieu du fichier.
- les codes ascii inférieurs à 32 sont très rares, en dehors de 9 (tabulation), 10/13 (retours à la ligne) et 12 (saut de page).
Je pense qu'on doit pouvoir s'en sortir avec ça et bricoler une routine capable de discerner les deux avec un assez bon pourcentage de réussite.
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
27 mars 2002 à 15:39
27 mars 2002 à 15:39
C'est plutôt dangereux de faire un exec avec n'importe quel fichier, non?
Si le fichier est un exe (sous win$) ou un script/executable sous Unix bonjour les ennuis.
Une r?gle souvent utilisée est de lire les 256 ou 512 premiers
caract?res et d'y rechercher les bytes de valeur inférieure ? 32 .
Si byte décelé --> data binaire
Sinon texte
Rappelons que sous les Unices existe la commande file
qui si le fichier /etc/magic est bien ? jour , fournit
une bonne idée du contenu du fichier
exemple:
johand@zoot:~/tmp/images$ file smiley.gif
smiley.gif: GIF image data, version 89a, 17 x 17
Allways close to Open Source...
Johan Daine
Si le fichier est un exe (sous win$) ou un script/executable sous Unix bonjour les ennuis.
Une r?gle souvent utilisée est de lire les 256 ou 512 premiers
caract?res et d'y rechercher les bytes de valeur inférieure ? 32 .
Si byte décelé --> data binaire
Sinon texte
Rappelons que sous les Unices existe la commande file
qui si le fichier /etc/magic est bien ? jour , fournit
une bonne idée du contenu du fichier
exemple:
johand@zoot:~/tmp/images$ file smiley.gif
smiley.gif: GIF image data, version 89a, 17 x 17
Allways close to Open Source...
Johan Daine
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
27 mars 2002 à 15:44
27 mars 2002 à 15:44
Je précise caract?res < 32 différents de \r \n \t
Allways close to Open Source...
Johan Daine
Allways close to Open Source...
Johan Daine
Pour faire la distinction entre fichiers binaire et ascii, tu lit la première ligne de ton fichier : si ca contient que des 0 et 1, alors c'est binaire.
zebiloute
Messages postés
105
Date d'inscription
mardi 15 janvier 2002
Statut
Membre
Dernière intervention
14 avril 2005
4
26 mars 2002 à 18:17
26 mars 2002 à 18:17
T' en as d'autres des comme ca ?
Non serieusement a la base ts les fichiers peuvent être considérer comme des fichiers binaires. Cela depende de comment tu les lis.
Je ne penses vraiment po que l on puisse les differencier ne connaissant po le format.
Quand ça veut Po ça veut po !!!
- Et ben y a plus qu'à attendre -
Non serieusement a la base ts les fichiers peuvent être considérer comme des fichiers binaires. Cela depende de comment tu les lis.
Je ne penses vraiment po que l on puisse les differencier ne connaissant po le format.
Quand ça veut Po ça veut po !!!
- Et ben y a plus qu'à attendre -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci pour votre aide
voici 2 solutions 100% efficaces qui peuvent vous être utiles
sur UNIX
file mon-fichier pour savoir si on a un fichier binaire (exécutable) ou un fichier texte. On obtient pour un fichier texte, comme sortie mon-fichier : ascii text.
<?
echo exec("file test");
echo "<br>";
echo exec("file test2");
?>
http://amf66.asso.fr/test.php
en invoquant un script Perl
if (-B "$NomFichier") {
print "Le fichier est binaire...\n";
}
voici 2 solutions 100% efficaces qui peuvent vous être utiles
sur UNIX
file mon-fichier pour savoir si on a un fichier binaire (exécutable) ou un fichier texte. On obtient pour un fichier texte, comme sortie mon-fichier : ascii text.
<?
echo exec("file test");
echo "<br>";
echo exec("file test2");
?>
http://amf66.asso.fr/test.php
en invoquant un script Perl
if (-B "$NomFichier") {
print "Le fichier est binaire...\n";
}