
[code]

        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;
            }
    }
    
[/code]

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

.net 3.5  
windows 8.1


CC BY-SA 3.0
2016-12-09T05:50:30.990
31042
2016-12-09T05:50:30.990
19310
question
c# .net
Buffer.BlockCopyについて