最大サイズ 1K のバイト配列バッファがあります。配列のサブセットを書き出す必要があります (サブセットの開始は常に要素 0 になりますが、関心のある長さは変数にあります)。
ここでのアプリケーションは圧縮です。バッファを圧縮関数に渡します。簡単にするために、圧縮によって 1K バイト以下のデータになると仮定します。
byte[] buffer = new byte[1024];
while (true)
{
uncompressedData = GetNextUncompressedBlock();
int compressedLength = compress(buffer, uncompressedData);
// Here, compressedBuffer[0..compressedLength - 1] is what we're interested in
// There's a method now with signature Write(byte[] compressedData) that
// I won't be able to change. Short of allocating a custom sized buffer,
// and copying data into the custom sized buffer... is there any other
// technique I could use to only expose the data I want?
}
ここでのコピーは避けたいと思います。必要なデータはすべてbuffer
既に含まれているため、完全に不要に思えます。