Do you have full control of decoder? I think first question is rather pointless if we can solve byte array right?
For full control I mean you can access process within decode. There are few steps before you will get final result.
Scan => Grab bit matrix => remove mask => get body bits array => detect which mode it use and which char encode table it uses. => decode bits array to char.
If you have full control, last process you can terminate. Stop decoder at detect mode and char table step and grab your byte array. If you can not do that, it will be rather hard. QrCode it self (ISO specification) doesn't support byte array. They are base
on char table. If you don't have full control of decoder, then it will be easier if you can find char table that doesn't have those null char.
Full 8-bit-byte char table I have list under here. http://qrcodenet.codeplex.com/SourceControl/changeset/view/19827#236629
If you have full control, then we can expand ECI set. For example ECI value equal to 30 is for byte array. Then encode from there. If your decode find out its eight bit byte encode and ECI value is 30, then do not decode. Just extract full bit array to byte
If you don't have full control, then you have to find proper char table that doesn't have special char, use those char and put into encoder. Once fully decode, read string and translate back to byte array.
First option gives best performance but will need a lot of control on both encoder and decoder. Second option is easier.