Binary operation not working in C : I have 24 bits stored as a string. I'm using C and I want to store each set of 8 bits, starting at position 0, as an element of a u8int_t vector. I've tried different things to no avail. This is my code:

    #include <stdio.h> 
    #include <stdlib.h>
    #define SIZE 8

    uint8_t send[SIZE/8];
    char data[] = "10101010";
  
    printf ("Data is = %s\n", data); 
    for ( int i = 0; i < SIZE/8; i++)
    {
        for ( int j = 0; j < 8; j++)
        {
            send[i] |= (data[j+8*i] == '1') << (7-i); 
        }
        printf("%d\n",send[i]);
    }

The value printed is 128, but 10101010 in decimal is 170. Am I missing something?