Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
convertion valeur hexadecimal en decimal
Envoyé par: demo2000

bonjour,
voilà mon fichier binaire en hexadecimal :
Citation

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 (programme C):
#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

Poste le Wednesday 5 October 2005 12:46:42
Répondre     Citer    
Re: conversion d’une valeur hexadécimale en décimal
Envoyé par: nicola

Le problème est que si ta valeur est trop grande (plus de 9999 en décimal), ça va dépasser et déborder sur le reste.
La conversion ne pose vraiment aucun problème : A=10, B=11, etc. Ensuite selon la position du chiffre il compte pour une unité, une seizaine, une 256-aine, etc. Donc AE C3 = 3×1 + 12×16 + 14×256 + 10×4096.

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Wednesday 5 October 2005 14:43:36
Répondre     Citer    
Re: conversion d’une valeur hexadécimale en décimal
Envoyé par: demo2000

c.a.d :
il faut faire une fonction qui fait la convertion.
alors pour avoir hex(A1A2A3A4) en decimal :
1- inverser(A1A2A3A4) ----> obtenir A4A3A2A1
2- ValeurDecimal =A*1+4*16+A*256.....
Merci

Poste le Wednesday 5 October 2005 14:54:48
Répondre     Citer    
Re: conversion d’une valeur hexadécimale en décimal
Envoyé par: nicola

Citation
demo2000
c.a.d :
il faut faire une fonction qui fait la
convertion.
alors pour avoir hex(A1A2A3A4) en decimal :
1- inverser(A1A2A3A4) ----> obtenir A4A3A2A1
2- ValeurDecimal =A*1+4*16+A*256.....
Merci

Non, tu t’es planté dans l’ordre. On commence à droite, plus on est à droite, moins le chiffre pèse.
Ton nombre vaut 4×1 + A×16 + 3×256…

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Wednesday 5 October 2005 16:24:43
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
convertion valeur hexadecimal en decimal
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons