#include <iostream>
using namespace std;
int main() {
unsigned int data = 0x00000000;
char mask = 0b00001111; // mask for 4 bits
char c1 = 0, c2 = 0, c3 = 0, c4 = 0; // characters for encryption
char d1 = 0, d2 = 0, d3 = 0, d4 = 0; // characters for decryption
cout << "Please input 4 characters:" << endl;
cin >> c1 >> c2 >> c3 >> c4;
cout << endl;
data =
(static_cast<unsigned int>(mask << 4 & c4) << 24) | (static_cast<unsigned int>(mask & c4) << 20) |
(static_cast<unsigned int>(mask << 4 & c3) << 20) | (static_cast<unsigned int>(mask & c3) << 16) |
(static_cast<unsigned int>(mask << 4 & c2) << 8) | (static_cast<unsigned int>(mask & c2) << 4) |
(static_cast<unsigned int>(mask << 4 & c1) << 4) | (static_cast<unsigned int>(mask & c1));
cout << "The encrypted result is (hex): 0x" << hex << data << endl;
cout << endl;
cout << endl;
cout << "The decrypted characters are: " << d1 << ' ' << d2 << ' ' << d3 << ' ' << d4 << endl;
cout << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CgoJdW5zaWduZWQgaW50IGRhdGEgPSAweDAwMDAwMDAwOwoJY2hhciBtYXNrID0gMGIwMDAwMTExMTsJCQkJICAgICAvLyBtYXNrIGZvciA0IGJpdHMKCWNoYXIgYzEgPSAwLCBjMiA9IDAsIGMzID0gMCwgYzQgPSAwOwkgLy8gY2hhcmFjdGVycyBmb3IgZW5jcnlwdGlvbgoJY2hhciBkMSA9IDAsIGQyID0gMCwgZDMgPSAwLCBkNCA9IDA7CSAvLyBjaGFyYWN0ZXJzIGZvciBkZWNyeXB0aW9uCgoJY291dCA8PCAiUGxlYXNlIGlucHV0IDQgY2hhcmFjdGVyczoiIDw8IGVuZGw7CgljaW4gPj4gYzEgPj4gYzIgPj4gYzMgPj4gYzQ7Cgljb3V0IDw8IGVuZGw7CgoJZGF0YSA9CgkJKHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obWFzayA8PCA0ICYgYzQpIDw8IDI0KSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1hc2sgJiBjNCkgPDwgMjApIHwKCQkoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtYXNrIDw8IDQgJiBjMykgPDwgMjApIHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obWFzayAmIGMzKSA8PCAxNikgfAoJCShzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1hc2sgPDwgNCAmIGMyKSA8PCA4KSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1hc2sgJiBjMikgPDwgNCkgfAoJCShzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1hc2sgPDwgNCAmIGMxKSA8PCA0KSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1hc2sgJiBjMSkpOwoKCWNvdXQgPDwgIlRoZSBlbmNyeXB0ZWQgcmVzdWx0IGlzIChoZXgpOiAweCIgPDwgaGV4IDw8IGRhdGEgPDwgZW5kbDsKCWNvdXQgPDwgZW5kbDsKCgkKCgoKCWNvdXQgPDwgZW5kbDsKCWNvdXQgPDwgIlRoZSBkZWNyeXB0ZWQgY2hhcmFjdGVycyBhcmU6ICIgPDwgZDEgPDwgJyAnIDw8IGQyIDw8ICcgJyA8PCBkMyA8PCAnICcgPDwgZDQgPDwgZW5kbDsKCgljb3V0IDw8IGVuZGw7CglyZXR1cm4gMDsKfQ==