int CD_SIZE  = 2;   
    int USE_SIZE = 3;
    int COUNT_SIZE = 1; 
    int UNKNOWN_SIZE = 5;           // 5B謎サイズ
    int LENGTH_SIZE = 1;
    int FOOTER_SIZE = 1;

    int nowPos  = 0;                            
    byte[] Count    = new byte[COUNT_SIZE];
    byte[] Length   = new byte[LENGTH_SIZE];

    nowPos += CD_SIZE + USE_SIZE;


    Buffer.BlockCopy( byteData, nowPos, Count, 0, COUNT_SIZE );
    int CountSize = Convert.ToInt32( BytesConvert.ToHexString( Count ), 16 );

    nowPos += COUNT_SIZE;
        for( int i = 0; i < CountSize; i++ ) {
            nowPos += UNKNOWN_SIZE;
            Buffer.BlockCopy( byteData, nowPos, Length, 0, LENGTH_SIZE );
            int strSize = Convert.ToInt32( BytesConvert.ToHexString( Length ), 16 );
            nowPos += LENGTH_SIZE;
            byte[] ResultByte = new byte[strSize];
            Buffer.BlockCopy(byteData, nowPos, ResultByte, 0, strSize) 
            nowPos += strSize + FOOTER_SIZE;
        }
}

Buffer.BlockCopyの部分で
配列のオフセットおよび長さが範囲を超えているか、カウンタがソース コレクションのインデックスから最後までの要素の数より大きい値です。
とエラーがでます。
データの中は
byteData は {byte[42]}
nowPos  は 12
ResultByteは {byte[29]}
strSize  は 29
という感じでした。
色々と調べてみましたが、根本的な解決に至らずに書き込みました。
ご教授よろしくお願いします。

.net 3.5
windows 8.1