2

2次元のバイト配列があり、1次元の配列からデータの各配列を更新/コピーしたいと思います。

var multi = new byte[5, 200];

var single0 = new byte[200]; // initialized to some data

var single1 = new byte[200]; // initialized to some data

var single2 = new byte[200]; // initialized to some data

var single3 = new byte[200]; // initialized to some data

var single4 = new byte[200]; // initialized to some data


Buffer.BlockCopy(single0, 0, multi, 0, single0.Count());

Buffer.BlockCopy(single1, 0, multi, 1, single1.Count());

Buffer.BlockCopy(single2, 0, multi, 2, single2.Count());

Buffer.BlockCopy(single3, 0, multi, 3, single3.Count());

Buffer.BlockCopy(single4, 0, multi, 4, single4.Count());

しかし、これは期待どおりに機能していません。最初の行のみが更新されます。

どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1

5

あなたの4番目の議論は間違っています。これは、ターゲット配列内のオフセットであることが意図されています。そのターゲット配列は、事実上、連続して200バイトの5つの「ブロック」です。だからあなたは欲しいでしょう:

int stride = single0.Length; // Or multi.GetLength(1)
Buffer.BlockCopy(single0, 0, multi, stride * 0, stride);
Buffer.BlockCopy(single1, 0, multi, stride * 1, stride);
Buffer.BlockCopy(single2, 0, multi, stride * 2, stride);
Buffer.BlockCopy(single3, 0, multi, stride * 3, stride);
Buffer.BlockCopy(single4, 0, multi, stride * 4, stride);
于 2013-02-18T11:51:31.343 に答える