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
| #include <iostream>
#include <String>
int main() {
std::string binMessage; // 88 bits + 24 checksum bits = 112 total
std::string crc;
std::string polynom = "1111111111111010000001001"; // 25 bits
std::cout << "Entrer message : ";
std::cin >> binMessage;
crc = binMessage.substr(88, 24); // Sauvegarde du CRC transmis
for(int i = 0; i != 88; i++) { // Pour les 88 bits du messages
if(binMessage.substr(i, 1) == "1") { // Si on a 1
for(int j = 0; j != 25; j++) { // Alors pour les 25 caractères suivant, dont le 1
if(binMessage[i + j] != polynom[j]) { // On fait un XOR avec le polynôme
binMessage.replace(i + j, 1, "1");
}
else {
binMessage.replace(i + j, 1, "0");
}
}
}
}
if(binMessage.substr(88, 24) == crc) {
std::cout << "Message valide !";
}
else {
std::cout << "Message invalide.";
}
return 0;
} |