/// <summary> /// 指定した長さの範囲のデータを読み取ります。 /// </summary> /// <param name="rangeLength">読み取るデータの長さを指定します。</param> /// <returns>読み取った範囲を BinarySubstr として返します。</returns> public BinarySubstr ReadRange(int rangeLength) { BinarySubstr r = new BinarySubstr(this.array, this.offset + this.index, rangeLength); this.index += rangeLength; return(r); }
/// <summary> /// 非同期化解除を行います。 /// </summary> /// <returns>非同期化を解除した後のデータを返します。</returns> public BinarySubstr ResolveUnsync() { BinarySubstr r = new BinarySubstr(new byte[this.length], 0); unsafe { fixed(byte *pImgB = &this.array[this.offset]) fixed(byte *pDatB = &r.array[r.offset]) { byte *pDat = pDatB; byte *pImg = pImgB; byte *pImgM = pImg + this.length; while (pImg < pImgM) { if ((*pDat++ = *pImg++) == 0xff && *pImg == 0) { pImg++; } } r.length = (int)(pDat - pDatB); } } return(r); }