Convertion fichier binaire a hexadecimal

Signaler
Messages postés
2
Date d'inscription
lundi 12 juillet 2010
Statut
Membre
Dernière intervention
23 août 2011
-
Messages postés
305
Date d'inscription
jeudi 29 avril 2004
Statut
Membre
Dernière intervention
18 janvier 2012
-
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

Messages postés
2116
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
10
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)
Messages postés
2
Date d'inscription
lundi 12 juillet 2010
Statut
Membre
Dernière intervention
23 août 2011

je veux convertir un fichier binaire en hexadécimal !
Messages postés
2116
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
10
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)
Messages postés
305
Date d'inscription
jeudi 29 avril 2004
Statut
Membre
Dernière intervention
18 janvier 2012

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...
Messages postés
14858
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
18 novembre 2020
93
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...
Messages postés
94
Date d'inscription
jeudi 23 novembre 2000
Statut
Membre
Dernière intervention
1 juin 2013

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
Messages postés
305
Date d'inscription
jeudi 29 avril 2004
Statut
Membre
Dernière intervention
18 janvier 2012

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