# How to convert bool array to byte?

I have following problem: I'm reading 8 bit signal from one Arduino pin and store all informatin in bool array. Now I want to convert this array to single byte in decimal. How to do this?

I've tried this:

``````bool ID = {0, 0, 0, 0, 0, 0, 1, 1};
int recivedID = int(ID);
``````

and

``````bool ID = {0, 0, 0, 0, 0, 0, 1, 1};
int recivedID = ID.toInt();
``````

non works.

• Why save it in a bool array in the first place? You could make a byte and set each bit individually. That will be more efficient.
– Paul
Aug 16, 2016 at 9:16

try with this:

``````int recivedID = ID | (ID << 1) | (ID << 2) | (ID << 3) | (ID << 4) | (ID << 5) | (ID << 6) | (ID << 7);
``````

which is the same as

``````int recivedID = 0;
for(int i=0; i<8; i++){
recivedID |= ID[i] << i;
}
``````

I haven't tested it though.

``````byte BoolArrayToByte(bool boolArray)
{
byte result = 0;

for(int i = 0; i < 8; i++)
{
if(boolArray[i])
{
result = result | (1 << i);
}
}

return result;
}
``````