Manipulating Binary data to transmit a byte

I have a lot of code for driving a VFD display, it uses SPI to communicate, I chose to use the "ShiftOut()" Arduino function which works really well. I already set up code to convert a string into its binary representation, the very specific problem I'm having has to do with how that binary data is coming out. For example I can do PrintString("Hello"); but what I get from bitRead(); is a continuous LONG line of binary that's obviously more than 8-bits and that's not going to work with ShiftOut();

So the question then is, if you had a long continuous streaming line of binary data coming in, how would you chop it up into 8-bit sections, and feed it into ShiftOut(); to send it out?

Note: You'll notice the ASCII binary data for the letters are reversed, I purposely set it up this way

Here's the relevant code:

void PrintString(String l){ 

digitalWrite(sspin, LOW); //slave select pin
shiftOut(datapin, clockpin, bitorder, 0b00001000); //DCRAM command starting at COM1
for(int i=0; i<l.length(); i++){ 
char Character = l.charAt(i); 
for(int k=0; k<8; k++){
bitsofCharacter = bitRead(Character, k);
Serial.print(bitsofCharacter); //for debugging, look at the long line of binary here
}
}
digitalWrite(sspin, HIGH);
}

Sir_Spunk:
Here's the relevant code:

It's always good to post the irrelevant code also. There may be clues in there an experienced eye would pick up. If too long, append as an attachment.

So the question then is, if you had a long continuous streaming line of binary data coming in, how would you chop it up into 8-bit sections, and feed it into ShiftOut(); to send it out?

so the irony is you are receiving bits on one interface that you would like echoed on another interface. And since you only know how to use shiftOut to output the data, you need to reformat the data.

assuming you read one bit at a time and know where the start is, you can collect bits into a byte and call shiftOut to process a byte when 8 bits have been received

   inpByte = inpByte << 1 | inpBit;
   if (++cnt == 8)  {
        shiftOut (... inpByte);
        cnt = 0
   }

can you output each received bit? presumably you just need to toggle a clock pin. set the datapin to the value of the received bit, raise and lower (or visa versa) the clockpin