You read and send bytes on the bus?
It is a serial bus as well, no?
So you don't need a 49 bits long bit string especially when you have 24 bits of address in that data. Just send bytes without converting to bits first. If you need to construct a single byte to hold 2 or more values, use bitwise logic to shift, mask and set bits or use C bit fields.
Simple fact is that your code should have all the message bytes in the output buffer before the first byte has completed sending. If not, it should rather soon.