Bonjour,
je souhaite lire des mots de 16 bits dans un fichier afin de le convertir ensuite en un entier.
Comment procéder pour lire ces bits ?
Bonjour,
je souhaite lire des mots de 16 bits dans un fichier afin de le convertir ensuite en un entier.
Comment procéder pour lire ces bits ?
Attention évidemment aux problèmes d'endianness.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if (1 != fread(buf, 2, 1, file)) { perror("fread"); ... }
Bonjour,
Il faut d'abord savoir si les mots sont stockés sous forme de texte ou binaire.
Texte :Binaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 /* définition d'un entier court, de taille 16 bits sur x86 (cf FAQ pour plus de précisions) */ short int i; int ret; /* ouverture en mode texte */ FILE * f = fopen("mon_fichier", "r"); if(NULL == f) { /* gestion de l'erreur d'ouverture */ } else { ret = fscanf(f, "%hd", &i); if(1 != ret) { /* gestion de l'erreur de lecture */ } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 /* définition d'un entier court */ short int i; int ret; /* ouverture en mode lecture binaire */ FILE * f = fopen("mon_fichier", "rb"); if(NULL == f) { /* gestion de l'erreur d'ouverture */ } else { ret = fread(&i, sizeof(i), 1, f); if(1 != ret) { /* gestion de l'erreur de lecture */ } }
Merci pour vos réponses.
En fait je souhaite lire un fichier quelconque afin de le crypter (je souhaite donc faire des opérations sur les bits). Une lecture binaire est donc nécessaire non ?
J'aurais aussi une autre question :
comment faire pour des mots plus grands (eg. 512 bits) ?
Partager