1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
#include <stdio.h>
#include <stdlib.h>
#ifdef WIN32
/* visualiser le fichier cree */
#define CAT "type"
#else
#define CAT "cat"
#endif
/* 0=LSB en tete 1=MSB en tete */
#define MSB_EN_TETE 1
/* 0=normal 1=debug */
#define DBG 1
#if DBG
/* créer un fichier binaire si il n'existe pas... */
static void make_file (char const *fname)
{
FILE *fp = fopen (fname, "wb");
if (fp != NULL)
{
unsigned i;
for (i = 0x1000; i < 0x1000 + 10; i++)
{
#if MSB_EN_TETE
fputc ((i >> (8 * 0)) & 0xFF, fp);
fputc ((i >> (8 * 1)) & 0xFF, fp);
#else
fputc ((i >> (8 * 1)) & 0xFF, fp);
fputc ((i >> (8 * 0)) & 0xFF, fp);
#endif
}
fclose (fp);
}
}
#endif
int main (void)
{
#define f_in "conso1.bin"
#define f_out "sortie.txt"
int ret = EXIT_SUCCESS;
FILE *entree = fopen (f_in, "rb");
if (entree != NULL)
{
FILE *sortie = fopen (f_out, "w");
if (sortie != NULL)
{
unsigned char tmp[2];
while (fread (tmp, sizeof tmp, 1, entree) == 1)
{
unsigned int val = 0;
#if MSB_EN_TETE
val |= (tmp[0] & 0xFF) << (0 * 8);
val |= (tmp[1] & 0xFF) << (1 * 8);
#else
val |= (tmp[0] & 0xFF) << (1 * 8);
val |= (tmp[1] & 0xFF) << (0 * 8);
#endif
printf ("%04X ", val);
fprintf (sortie, "%u\n", val);
}
fclose (sortie);
printf ("\n\n");
system (CAT " " f_out);
}
else
{
perror (f_out);
ret = EXIT_FAILURE;
}
fclose (entree);
}
else
{
perror (f_in);
ret = EXIT_FAILURE;
#if DBG
make_file (f_in);
#endif
}
return ret;
} |
Partager