トップ回答者
バイト配列を240バイトごとに区切りたい

質問
-
回答
-
ループで回すのは仕方が無いと
byte[] bsSource = new byte[300]; for (int i = 0; i < bsSource.Length; i++) { bsSource[i] = (byte)(i & 0xff); } int remain = bsSource.Length; int position = 0; int split; List<byte[]> list = new List<byte[]>(); while (remain > 0) { split = remain < 240 ? remain : 240; remain -= split; byte[] bs240 = new byte[split]; Array.Copy(bsSource , position , bs240 , 0 , split); list.Add(bs240); position += split; }
- 回答としてマーク コンドル 2009年9月19日 7:10
すべての返信
-
ループで回すのは仕方が無いと
byte[] bsSource = new byte[300]; for (int i = 0; i < bsSource.Length; i++) { bsSource[i] = (byte)(i & 0xff); } int remain = bsSource.Length; int position = 0; int split; List<byte[]> list = new List<byte[]>(); while (remain > 0) { split = remain < 240 ? remain : 240; remain -= split; byte[] bs240 = new byte[split]; Array.Copy(bsSource , position , bs240 , 0 , split); list.Add(bs240); position += split; }
- 回答としてマーク コンドル 2009年9月19日 7:10
-
siokoshou様
ご回答ありがとうございます。
ArraySegment< T> 構造体でも分割できるようですね。
以下の内容を読んで理解しました。
http://msdn.microsoft.com/ja-jp/library/1hsbd92d(VS.80).aspx
勉強になりました。
ありがとうございます。 -
ArraySegment< T> 構造体でも分割できるようですね。
念のためですが、補足します。
以下の内容を読んで理解しました。
http://msdn.microsoft.com/ja-jp/library/1hsbd92d(VS.80).aspx
ArraySegment<T> はあくまで、「配列、どこから始めるか、何個使うか」をセットで持ったものです。
分割しているわけではなく、「どこからどこを使ってね」と教えてあげるものです。
このため、ArraySegment<T> の Array プロパティにアクセスすると、全ての要素を見ることができます。
(for ループの開始数値を 0 、終了条件を i < arrSeg.Array.Length とすれば全要素を列挙できる)
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。