Wenn Du die einzelnen Bits nacheinander (seriell) bekommst, kannst Du auch tatsächlich Bits schieben.
Kleines Beispiel:
int bits[20] = {1,0,1,1,0,0,1,0,0,0,1,1,1,0,1,0,0,1,1,1};
void setup() {
Serial.begin(9600);
long data = 0;
for (int i = 0; i< 20; i++)
//alle Bits eins weiter schieben und aktuelles Bit dazu addieren
data = ( data << 1 ) + bits[i];
Serial.println(data,BIN);
}
void loop() {}