Envoyé par
halil.zakaria
est ce que j'aurais besoin de remplacer ma fonction de lecture de fichier par une autre fonction qui supporte une lectue en binaire??une fonction qui sait lire octet par octet ????
un ifstream permet de lire en binaire, il suffit de la préciser à l'ouverture du fichier; mais si ton fichier de données est écrit en mode "texte" et non binaire ça ne te sera probablement pas utile.
ifstream fichier("C:\\y\\y.txt", ios::in | ios::binary);
Ici, un stringstream ne permettrait pas de récupérer les valeurs plus facilement ?
edit: pas besoin de stringstream, j'avais oublié que fstream possède toutes les surchargent de l'opérateur >> suffisantes.
On peut donc lire un unsigned int en base 16, puis le caster en unsigned char. (comme ça on à pas à prendre en compte les espaces, ni la "fabrication" des nombres à partir des caractères lus)
1 2 3 4 5 6 7 8 9 10 11 12 13
| ifstream fi("./data");
unsigned int ui;
unsigned char data[42];
int i=0;
while(!fi.eof()) {
fi >> hex >> ui; // un nombre et pas un caractère
data[i] = static_cast<unsigned char>(ui);
// reconversion en int pour l'affichage
cout << "(0x" << hex << (int)data[i] << dec << ":" << (int)data[i] << ") ";
++i;
} |
Partager