/* Ce programme convertit un fichier objet en fichier hexadécimal. Auteur: Jeff Chai - Domaine public NOTE: il faus savoir comment compiler sous TC 3.0, DJGPP, et MS Developper Studio. */ // Inclusion les fichier d'en-tête #include #include #include // La partie principale du programme commence ici int main( int argc, char **argv ) { FILE *obj_in; // Déclaration d'un pointeur de fichier unsigned char byte_in; // Un tampon d'octet static char hex[] = {"0123456789ABCDEF"}; // Code ASCII int hi, lo, i; // quartets haut, bas, et index // Ouvre le fichier objet en utilisant le nom dans argv[] if( (obj_in = fopen(argv[1],"rb" )) == NULL ) { // Valeur NULL obtenue, le fichier n'existe pas. fprintf( stderr, "N'a pas pu ouvrir %s\n",argv[1] ); return 1; } i = 1; while( !feof(obj_in) ) // Tant que End-of-file non atteint, refaire la boucle { // Obtenir un caractère non signé (unsigned) du fichier byte_in = fgetc( obj_in); if (!feof(obj_in)) // pas un caractère EOF { // décaler à droite de 4 bits pour avoir le quartet haut hi = byte_in /16; // Masquer le quartet haut pour avoir le quartet bas lo = byte_in & 0xF; // Placer le caractère Hexa correspondant fputc( hex[hi], stdout ); // Placer le caractère Hexa correspondant fputc( hex[lo], stdout ); if (i > 5) // Placer un caractère de changement de ligne tous les 6 octets { i = 0; fputc ('\n',stdout); } ++i; } // End if } // Fin de la boucle // TERMINÉ, fermer le fichier fclose(obj_in); return 0; // Return 0 pour indiquer un retour normal } // Fin du programme