これで何をしているのかはまだ言っていませんが、多くのbyte[]
処理コードでは、バッファへのオフセットを使用しています...したがって、最初にこのオフセットをに設定する代わりに0
、「同じ」の長さに設定します。バイト」。
ラップインしている場合は、作業する前にその番号に転送をMemoryStream
設定することができます。Position
Buffer.BlockCopy
最後に、開始オフセットを指定して、おそらくを使用して、目的のデータをコピーすることができます。2番目のバッファとブロックコピーは冗長であるため、これは私の最も好ましくないオプションです(すでにデータがあり、どこを見たいかがわかっています)。
例:
// invent some initial data
byte[] data = Encoding.ASCII.GetBytes("samebytesDataNeededIsHere");
int fixedOffset = 9; // length of samebytes
// as a segment
ArraySegment<byte> segment = new ArraySegment<byte>(data,
fixedOffset, data.Length - fixedOffset);
// as a separate buffer
byte[] copy = new byte[data.Length - fixedOffset];
Buffer.BlockCopy(data, fixedOffset, copy, 0, copy.Length);
// as a stream
var ms = new MemoryStream(data, fixedOffset, data.Length - fixedOffset);
// or just directly
for(int i = fixedOffset ; i < data.Length ; i++) {
// access data[i]
}