Ciao,
A vedere il codice così, sembra che l'errore possa stare solo nel metodo di "riduzione dell'array" che usi prima di ottenere la stringa.
In realtà, tale metodo di riduzione non è nemmeno necessario, basta usare l'overload che prende, oltre all'array di byte, anche l'offset e la lunghezza della porzione di byte da convertire:
res += Encoding.Default.GetString(data, 0, rec);
Luca