bonjour,
voilà mon fichier binaire en hexadecimal :
A1 A2 A3 A4 BB DD AA FF
je voudrais lire les 4 premier octet (ecrit en hexadecimal), en decimal !
la valeur du 4 octet en hexa est lu à partir de la fin !
c.à.d :
hex(A4 A3 A2 A1) = ? (decimal)
voilà ou je suis :
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char ** argv) {
FILE *infile;
FILE *outfile;
int i=0;
if ((infile = fopen(argv[1], "rb")) == NULL)
{
fprintf(stderr, "Pb ouverture infile !\n");
return(EXIT_FAILURE);
}
if(!fread(&i,1,4, infile))
{
fprintf(stderr,"fread header Failure !\n");
return(EXIT_FAILURE);
}
printf("%d\n",i);
return(EXIT_SUCCESS);
}
la valeur afficher ne convient pas !
Merci
# endianess ...
Posté par minico . Évalué à 1.
tu es face a des problemes d'endiannes ... Comme tu travaillle probablement sur une machine i?86 (qui est une machine little endian), le processeur récupère les octets de poid faible du mot 32bit aux adresse faibles, ce qui explique que quand tu t'attend a lire 0xA1A2A3A4 tu lise 0xA4A3A2A1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.