#include <iostream>
#include <fstream>
#include <stdio.h>
#include <string.h>
#include <cmath>
using namespace std;
int main(void)
{
char* input = "01001001001000000110110001101001011010110110010100100000011110010110111101110101";
int length = strlen(input); //get length of string
int binary[8]; //array used to store 1 byte of binary number (1 character)
int asciiNum = 0; //the ascii number after conversion from binary
char ascii; //the ascii character itself
cout << " ";
int z = 0; //counter used
for(int x = 0; x < length / 8; x++) //reading in bytes. total characters = length / 8
{
for(int a = 0; a < 8; a++) //store info into binary[0] through binary[7]
{
binary[a] = (int) input[z] - 48; //z never resets
z++;
}
int power[8]; //will set powers of 2 in an array
int counter = 7; //power starts at 2^0, ends at 2^7
for(int x = 0; x < 8; x++)
{
power[x] = counter; //power[] = {7, 6, 5, ..... 1, 0}
counter--; //decrement counter each time
}
for(int y = 0; y < 8; y++) //will compute asciiNum
{
double a = binary[y]; //store the element from binary[] as "a"
double b = power[y]; //store the lement from power[] as "b"
asciiNum += a* pow(2, b); //asciiNum = sum of a * 2^power where 0 <= power <= 7, power is int
}
ascii = asciiNum; //assign the asciiNum value to ascii, to change it into an actual character
asciiNum = 0; //reset asciiNum for next loop
cout << ascii; //display the ascii character
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnN0cmVhbT4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGNtYXRoPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4odm9pZCkKewogICAgY2hhciogaW5wdXQgPSAiMDEwMDEwMDEwMDEwMDAwMDAxMTAxMTAwMDExMDEwMDEwMTEwMTAxMTAxMTAwMTAxMDAxMDAwMDAwMTExMTAwMTAxMTAxMTExMDExMTAxMDEiOwoJaW50IGxlbmd0aCA9IHN0cmxlbihpbnB1dCk7ICAgICAvL2dldCBsZW5ndGggb2Ygc3RyaW5nCgkKCWludCBiaW5hcnlbOF07ICAgIC8vYXJyYXkgdXNlZCB0byBzdG9yZSAxIGJ5dGUgb2YgYmluYXJ5IG51bWJlciAoMSBjaGFyYWN0ZXIpCglpbnQgYXNjaWlOdW0gPSAwOyAgICAgIC8vdGhlIGFzY2lpIG51bWJlciBhZnRlciBjb252ZXJzaW9uIGZyb20gYmluYXJ5CgljaGFyIGFzY2lpOyAgICAgIC8vdGhlIGFzY2lpIGNoYXJhY3RlciBpdHNlbGYKCQoJY291dCA8PCAiICI7CgkKCWludCB6ID0gMDsgICAvL2NvdW50ZXIgdXNlZAoJCglmb3IoaW50IHggPSAwOyB4IDwgbGVuZ3RoIC8gODsgeCsrKSAgICAgLy9yZWFkaW5nIGluIGJ5dGVzLiB0b3RhbCBjaGFyYWN0ZXJzID0gbGVuZ3RoIC8gOAoJewoJCWZvcihpbnQgYSA9IDA7IGEgPCA4OyBhKyspICAgICAgLy9zdG9yZSBpbmZvIGludG8gYmluYXJ5WzBdIHRocm91Z2ggYmluYXJ5WzddCgkJewoJCQliaW5hcnlbYV0gPSAoaW50KSBpbnB1dFt6XSAtIDQ4OyAgICAgIC8veiBuZXZlciByZXNldHMKCQkJeisrOwoJCX0KCQkKCQlpbnQgcG93ZXJbOF07ICAgIC8vd2lsbCBzZXQgcG93ZXJzIG9mIDIgaW4gYW4gYXJyYXkKCQlpbnQgY291bnRlciA9IDc7ICAgICAgICAvL3Bvd2VyIHN0YXJ0cyBhdCAyXjAsIGVuZHMgYXQgMl43CgkJZm9yKGludCB4ID0gMDsgeCA8IDg7IHgrKykKCQl7CgkJCXBvd2VyW3hdID0gY291bnRlcjsgICAgICAvL3Bvd2VyW10gPSB7NywgNiwgNSwgLi4uLi4gMSwgMH0KCQkJY291bnRlci0tOyAgICAvL2RlY3JlbWVudCBjb3VudGVyIGVhY2ggdGltZQoJCX0KCQkKCQlmb3IoaW50IHkgPSAwOyB5IDwgODsgeSsrKSAgICAvL3dpbGwgY29tcHV0ZSBhc2NpaU51bQoJCXsKCQkJZG91YmxlIGEgPSBiaW5hcnlbeV07ICAgIC8vc3RvcmUgdGhlIGVsZW1lbnQgZnJvbSBiaW5hcnlbXSBhcyAiYSIKCQkJZG91YmxlIGIgPSBwb3dlclt5XTsgICAgLy9zdG9yZSB0aGUgbGVtZW50IGZyb20gcG93ZXJbXSBhcyAiYiIKCQkJCgkJCWFzY2lpTnVtICs9IGEqIHBvdygyLCBiKTsgICAvL2FzY2lpTnVtID0gc3VtIG9mIGEgKiAyXnBvd2VyIHdoZXJlIDAgPD0gcG93ZXIgPD0gNywgcG93ZXIgaXMgaW50CgkJfQoJCQoJCWFzY2lpID0gYXNjaWlOdW07ICAgLy9hc3NpZ24gdGhlIGFzY2lpTnVtIHZhbHVlIHRvIGFzY2lpLCB0byBjaGFuZ2UgaXQgaW50byBhbiBhY3R1YWwgY2hhcmFjdGVyCgkJYXNjaWlOdW0gPSAwOyAgICAvL3Jlc2V0IGFzY2lpTnVtIGZvciBuZXh0IGxvb3AKCQkKCQljb3V0IDw8IGFzY2lpOwkvL2Rpc3BsYXkgdGhlIGFzY2lpIGNoYXJhY3RlcgoJfQoKCQoJcmV0dXJuIDA7Cn0K