#include <iostream>
using namespace std;
uint32_t bits = 0;
uint8_t index = 0;
uint8_t maxDigits = 10;
char test[] = "10010111#";
int main()
{
char * p = test;
char c = '\0';
bool validate = false;
while ((c = *p++) != '\0')
{
switch (c)
{
case '0':
case '1':
{
if (index < maxDigits)
{
bits = bits | (c - '0') << index++;
}
else
{
validate = true;
}
break;
}
case '#':
{
validate = true;
break;
}
}
if (validate == true)
{
printf("bits = %d\n", bits);
for (uint8_t i = 0; i < index; i++)
{
printf("%d %s\n", i, (bits >> i) & 1 != 0 ? ("true") : ("false"));
}
bits = 0;
index = 0;
validate = false;
break;
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdWludDMyX3QgYml0cyA9IDA7CnVpbnQ4X3QgaW5kZXggPSAwOwp1aW50OF90IG1heERpZ2l0cyA9IDEwOwoKY2hhciB0ZXN0W10gPSAiMTAwMTAxMTEjIjsKCmludCBtYWluKCkKewoJY2hhciAqIHAgPSB0ZXN0OwoJY2hhciBjID0gJ1wwJzsKCWJvb2wgdmFsaWRhdGUgPSBmYWxzZTsKCQoJd2hpbGUgKChjID0gKnArKykgIT0gJ1wwJykKCXsKCQlzd2l0Y2ggKGMpCgkJewoJCQljYXNlICcwJzoKCQkJY2FzZSAnMSc6CgkJCXsKCQkJCWlmIChpbmRleCA8IG1heERpZ2l0cykKCQkJCXsKCQkJCQliaXRzID0gYml0cyB8IChjIC0gJzAnKSA8PCBpbmRleCsrOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCXZhbGlkYXRlID0gdHJ1ZTsKCQkJCX0KCQkJCWJyZWFrOwoJCQl9CgkJCWNhc2UgJyMnOgoJCQl7CgkJCQl2YWxpZGF0ZSA9IHRydWU7CgkJCQlicmVhazsKCQkJfQoJCX0KCQkKCQlpZiAodmFsaWRhdGUgPT0gdHJ1ZSkKCQl7CgkJCXByaW50ZigiYml0cyA9ICVkXG4iLCBiaXRzKTsKCQkJZm9yICh1aW50OF90IGkgPSAwOyBpIDwgaW5kZXg7IGkrKykKCQkJewoJCQkJcHJpbnRmKCIlZCAlc1xuIiwgaSwgKGJpdHMgPj4gaSkgJiAxICE9IDAgPyAoInRydWUiKSA6ICgiZmFsc2UiKSk7CgkJCX0KCQkJYml0cyA9IDA7CgkJCWluZGV4ID0gMDsKCQkJdmFsaWRhdGUgPSBmYWxzZTsKCQkJYnJlYWs7CgkJfQoJfQoJcmV0dXJuIDA7Cn0=