#include <iostream>
#include <stdlib.h>
#include <bitset>
#include <vector>
#include <string>
#include <sstream>
#include <fstream>
#include <streambuf>
#include <iterator>
using namespace std;
int main()
{
ifstream t("InputData.txt");
stringstream buffer;
buffer << t.rdbuf(); //buffer has the contents of the file which we will now parse
istream_iterator<int> beg(buffer), end; //this will split the buffer from whitespaces
//the result is an iterator
vector<int> tokens(beg, end); //A vector is kinda like an array, but dynamically modifiable
for(vector<int>::iterator it = tokens.begin(); it != tokens.end(); ++it) { //for every 32 bit integer in the input
string binary = bitset<32>(*it).to_string(); //convert to binary to separate 4 bytes which will each represent a character
for (int k = 0; k<4; k++) { //for every character represented, display it on the console
string subBinary = binary.substr (k*8,8);
cout << (char)bitset<8>(subBinary).to_ulong();
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxiaXRzZXQ+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxzc3RyZWFtPgojaW5jbHVkZSA8ZnN0cmVhbT4KI2luY2x1ZGUgPHN0cmVhbWJ1Zj4KI2luY2x1ZGUgPGl0ZXJhdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkKewogICAgaWZzdHJlYW0gdCgiSW5wdXREYXRhLnR4dCIpOwogICAgc3RyaW5nc3RyZWFtIGJ1ZmZlcjsKICAgIGJ1ZmZlciA8PCB0LnJkYnVmKCk7ICAgICAgICAvL2J1ZmZlciBoYXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIHdoaWNoIHdlIHdpbGwgbm93IHBhcnNlCgogICAgaXN0cmVhbV9pdGVyYXRvcjxpbnQ+IGJlZyhidWZmZXIpLCBlbmQ7ICAgICAgLy90aGlzIHdpbGwgc3BsaXQgdGhlIGJ1ZmZlciBmcm9tIHdoaXRlc3BhY2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy90aGUgcmVzdWx0IGlzIGFuIGl0ZXJhdG9yCgogICAgdmVjdG9yPGludD4gdG9rZW5zKGJlZywgZW5kKTsgICAgICAgICAgICAgICAgICAgLy9BIHZlY3RvciBpcyBraW5kYSBsaWtlIGFuIGFycmF5LCBidXQgZHluYW1pY2FsbHkgbW9kaWZpYWJsZQoKICAgIGZvcih2ZWN0b3I8aW50Pjo6aXRlcmF0b3IgaXQgPSB0b2tlbnMuYmVnaW4oKTsgaXQgIT0gdG9rZW5zLmVuZCgpOyArK2l0KSB7ICAvL2ZvciBldmVyeSAzMiBiaXQgaW50ZWdlciBpbiB0aGUgaW5wdXQKICAgICAgICBzdHJpbmcgYmluYXJ5ID0gYml0c2V0PDMyPigqaXQpLnRvX3N0cmluZygpOyAgICAvL2NvbnZlcnQgdG8gYmluYXJ5IHRvIHNlcGFyYXRlIDQgYnl0ZXMgd2hpY2ggd2lsbCBlYWNoIHJlcHJlc2VudCBhIGNoYXJhY3RlcgogICAgICAgIGZvciAoaW50IGsgPSAwOyBrPDQ7IGsrKykgeyAgICAgICAgICAgICAgICAgICAgICAgICAvL2ZvciBldmVyeSBjaGFyYWN0ZXIgcmVwcmVzZW50ZWQsIGRpc3BsYXkgaXQgb24gdGhlIGNvbnNvbGUKICAgICAgICAgICAgc3RyaW5nIHN1YkJpbmFyeSA9IGJpbmFyeS5zdWJzdHIgKGsqOCw4KTsKICAgICAgICAgICAgY291dCA8PCAgKGNoYXIpYml0c2V0PDg+KHN1YkJpbmFyeSkudG9fdWxvbmcoKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfQo=