Convertion fichier binaire a hexadecimal

mangarance Messages postés 2 Date d'inscription lundi 12 juillet 2010 Statut Membre Dernière intervention 23 août 2011 - 23 août 2011 à 17:38
cs_LA_Tupac Messages postés 305 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 18 janvier 2012 - 24 août 2011 à 01:03
salut a tout le monde j'aurai besoin d'aide pour ce code
code :


#include<stdlib.h>
#include<stdio.h>


void BinHexaCON(char *hexa,int *x0);

int main()
{
FILE *fichier_lu = NULL;
FILE *fichier_convertit;
char bin[8];
int b[10],i,n;
char caracter = 0;

/*ouvertur du fichier a convertir*/
fichier_lu = fopen("ACQ_b05698858.dat","rb");

if(fichier_lu != NULL)
{

/*fichier accueillant la convertion hexa*/
fichier_convertit = fopen("ConversionUP.txt","w+");
if(fichier_convertit != NULL)
{
do {
caracter = fgetc(fichier_lu);
/* On vérifie que le caractère lu soit bien en valeur binaire */
if ((caracter >= '0') && (caracter <= '1'))
{
//convertion
bin[0] = caracter;
//BinHexaCON();
char *hexa;
int *x0;
BinHexaCON(&hexa[0], &b[3], &b[2], &b[1], &b[0]);
// fprintf(fichier_convertit,"%s",/*b[0],b[1],b[2],b[3]*/fichier_convertit);
fprintf(fichier_convertit,"%d",i,n);//"%d%d%d%d",b[3],b[2],b[1],b[0]);
// fprintf(fichier_convertit,"%s",fichier_convertit);
}
} while (caracter != EOF);

}
}

}
/* fonction convertissant un caractère héxadécimal en binaire sur 4 bits. Retourne -1 si le
* caractère à convertir n'est pas valide, 0 sinon. */
int BinToHexa (int bin,char *x0)
{
switch (bin)
{
case 0000 : *x0 = '0';
break;
case 0001 : *x0 = '1';
break;
case 0010 : *x0 = '2';
break;
case 0011 : *x0 = '3';
break;
case 0100 : *x0 = '4';
break;
case 0101 : *x0 = '5';
break;
case 0110 : *x0 = '6';
break;
case 0111 : *x0 = '7';
break;
case 1000 : *x0 = '8';
break;
case 1001 : *x0 = '9';
break;
case 1010 : *x0 = 'A';
break;
case 1011 : *x0 = 'B';
break;
case 1100 : *x0 = 'C';
break;
case 1101 : *x0 = 'D';
break;
case 1110 : *x0 = 'E';
break;
case 1111 : *x0 = 'F';
break;
default : return -1;
}
//return 10;
}




/*
while(caracter != EOF)
{
caracter = fgetc(fichier_lu);


if ((caracter >= '0') && (caracter <= '1'))
{
goto convertion;
}
else
{
;
}

if((caracter != EOF))
{
bin[0] = caracter;
BinHexa();
fprintf(fichier_convertit,"%d%d%d%d");
}
else
{
;
}*/

7 réponses

cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
23 août 2011 à 17:54
salut, ...

hmmm!! on serait pas sur le fofo java la???
ton prog c est du C++ et de plus quelle est la question????

GodConan ;o)
0
mangarance Messages postés 2 Date d'inscription lundi 12 juillet 2010 Statut Membre Dernière intervention 23 août 2011
23 août 2011 à 18:11
je veux convertir un fichier binaire en hexadécimal !
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
23 août 2011 à 18:36
C est bien ce que je dis o) ce n est en rien une question!!! ;o)
Mais vu du code présenté je me doute qu il doit y avoir quelques soucis ;o) ...
dejà présente ce que tu doit exactement faire quel est la structure de ton fichier source et celle que tu veux en destination!!!

Pour moi (dans mon language) ;o) un fichier binaire ou hexa c est la meme chose l hexa etant juste la facon de representer un fichier binaire... (pour faire plus court à ecrire) ;o)

GodConan ;o)
0
cs_LA_Tupac Messages postés 305 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 18 janvier 2012 1
23 août 2011 à 19:54
Ce code n'est pas de toi
J'ai bon hein?
De plus la question est sans fondement...
Les fichiers binaires sont déjà en héxa car codés à coup de 32b (2*16).
En tout cas ça crain de piquer une source et de balancer qu'on a un problème avec...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
23 août 2011 à 22:46
Bonsoir,

if ((caracter >= '0') && (caracter <= '1')) 

Si tu rentre dans ce if, cela veut dire que caracter vaut soit 0, soit 1

int BinToHexa (int bin,char *x0) 
{ 
switch (bin) 
{ 
case 0000 : *x0 = '0'; 
break; 
case 0001 : *x0 = '1'; 
break; 

Il y a un souci de compréhension et/ou de syntaxe. Dans tes conditions case, tu écris comme si tu voulais écrire en binaire. Or, cela ne va pas être compris ainsi mais bien 1, 10 (dix), 11 (onze),...

Et au fait, j'ai déplacé ta demande dans la section C/C++. Attention la prochaine fois...


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
shorzy Messages postés 94 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 1 juin 2013
24 août 2011 à 00:50
Salut
Et Encore...

Quand il y a un Zéro devant ton Chiffre :
Le Compilo le Comprend comme de la Base 8
Soit : (010)Base8 == (8)Base10
Comprenez Vous ?

Et Puis Ton getchar() te renvoit directement un Hexa !!!!!
C à dire que tu peux t'arrêter là !!! c'est Fini !!! tu as ton Octet !!!


Ou tu ne sais pas ce que tu veux faire,
ou tu ne sais pas ce que tu fais !!!




Comment as tu su d'où il sortait ça, LA_Tupac ?



------------
Yeeh Baby
0
cs_LA_Tupac Messages postés 305 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 18 janvier 2012 1
24 août 2011 à 01:03
Le feeling
Le gars te sort une aberration énorme et un code super commenté digne d'un tuto de site de prog ...
Pour moi ça part d'une erreur d’interprétation :
"Le binaire c'est 0&1, l'hexa c'est 0->f, donc c'est forcément différent."
Et un essai de solution :
"google, dis moi comment convertir du binaire en hexa"
Et là, c'est le drame
0
Rejoignez-nous