#include <stdio.h>
void outputAsDecimal(char *binary)
{
char digits[200]; // arbitrary size for now
for (int i=0; i< 200; ++i)
digits[i] = 0;
while (*binary != 0)
{
// shift the digits, with carry
int carry = 0;
for (int i = 0; i< 200; ++i)
{
int d = digits[i] *2 + carry;
carry = d > 9;
digits[i] = d % 10;
}
// or in the new bit
if (*binary++ == '1')
digits[0] |= 1;
}
// output with leading zeroes!
for (int i = 199; i >=0; --i)
{
putchar(digits[i] + '0'); // convert to ascii
}
}
int main()
{
outputAsDecimal("11111111111111111111111111111111111111111111111111111111111111111");
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIG91dHB1dEFzRGVjaW1hbChjaGFyICpiaW5hcnkpCnsKICAgY2hhciBkaWdpdHNbMjAwXTsgLy8gYXJiaXRyYXJ5IHNpemUgZm9yIG5vdwogCiAgIGZvciAoaW50IGk9MDsgaTwgMjAwOyArK2kpCiAgICAgZGlnaXRzW2ldID0gMDsKIAogICB3aGlsZSAoKmJpbmFyeSAhPSAwKQogICB7CiAKICAgLy8gc2hpZnQgdGhlIGRpZ2l0cywgd2l0aCBjYXJyeQogICAgIGludCBjYXJyeSA9IDA7CiAKICAgICBmb3IgKGludCBpID0gMDsgaTwgMjAwOyArK2kpCiAgICAgewogICAgICAgaW50IGQgPSBkaWdpdHNbaV0gKjIgKyBjYXJyeTsKICAgICAgIGNhcnJ5ID0gZCA+IDk7CiAgICAgICBkaWdpdHNbaV0gPSBkICUgMTA7CiAgICAgfQogCiAgIC8vIG9yIGluIHRoZSBuZXcgYml0CiAgICAgaWYgKCpiaW5hcnkrKyA9PSAnMScpIAogICAgICAgZGlnaXRzWzBdIHw9IDE7CiAgIH0KIAogICAgLy8gb3V0cHV0IHdpdGggbGVhZGluZyB6ZXJvZXMhCiAgICBmb3IgKGludCBpID0gMTk5OyBpID49MDsgLS1pKQogICAgewogICAgICBwdXRjaGFyKGRpZ2l0c1tpXSArICcwJyk7IC8vIGNvbnZlcnQgdG8gYXNjaWkKICAgIH0KfQogCmludCBtYWluKCkKewogICAgb3V0cHV0QXNEZWNpbWFsKCIxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMSIpOwp9