Fondamentalement, j'ai un fichier texte qui contient un nombre. J'ai changé le nombre à 0 pour commencer et puis j'ai lu 2 octets du fichier (parce qu'un int est 2 bytes) et je l'ai converti en int. J'imprime ensuite les résultats, mais il imprime des résultats bizarres. Donc, quand j'ai 0, j'imprime 2608 pour une raison quelconque.La lecture de 2 octets à partir d'un fichier et la conversion en un entier donne la mauvaise sortie
Je quitte un document qui dit que je dois lire un fichier où le décalage des octets 0 à 1 représente un nombre. C'est pourquoi je lis des octets au lieu de caractères ...
J'imagine que le problème est dû à la lecture d'octets au lieu de la lecture par caractères, donc si c'est le cas, pouvez-vous expliquer pourquoi cela ferait une différence ?
Voici mon code:
void readFile(FILE *file) {
char buf[2];
int numRecords;
fread(buf, 1, 2, file);
numRecords = buf[0] | buf[1] << 8;
printf("numRecords = %d\n", numRecords);
}
Je ne suis pas vraiment sûr de ce que le buf [0] | buf [1] < < 8 fait, mais je l'ai eu d'une autre question ... Donc je suppose que cela pourrait être le problème aussi bien.
Décidez-vous. Soit vous avez un fichier texte ou vous avez un fichier avec des entiers binaires de 2 octets. Pas les deux en même temps. – EJP
@EJP J'ai complètement effacé et j'ai oublié que mon int serait sous forme ASCII. – Logan