J'ai un fichier que je veux lire en C++. La première chose que je dois lire et vérifier est le nombre magique du fichier. Dans mon cas, il est le Hex Valeur: 0xABCDEF00C++ lire et comparer le nombre magique à partir du fichier
Je lis et compare le nombre de cette façon:
ifstream input ("C:/Desktop/myfile", ios::binary);
if (input.is_open()) {
input.seekg(0, ios::beg);
unsigned char magic[4] = {0};
input.read((char*)magic, sizeof(magic));
if(magic[0] == 0xAB &&
magic[1] == 0xCD &&
magic[2] == 0xEF &&
magic[3] == 0x00) {
cout << "It's my File!" << endl;
} else {
cout << "Unknown File!" << endl;
}
}
Cela fonctionne très bien, mais est-il un moyen de comparer l'ensemble de lecture char [] - Array à la fois? Comme cette façon:
unsigned int magicNumber = 0xABCDEF00;
... same code for reading file as above ...
Instead of checking each Array-Entry a way like this:
if(magic == magicNumber) {
do something ...
}
Ce serait bien de savoir s'il y a une telle façon - sinon merci de me TEELING qu'il n'y a pas de telle façon :)
Vous pouvez utiliser memcpy pour copier le contenu du tableau char dans un entier non signé. 'memcpy (& anUnsignedInt, magie, sizeof (unsigned int));' – Christoph
Est-ce que nombre magique dans la gamme de 'long'? Considérons ensuite std :: stol ou familier (stoi pour int, stoll pour long long, ajoutez 'u' avant' i'/'l' /' ll' pour unsigned) ... –
Ne va pas travailler dans un fichier binaire, @LapshinDmitry – user4581301