public void ShiftRight(TypeCode typeCode, IConvertible value) { if (_rightOffsetWrite > _buffer.Length) { throw new IndexOutOfRangeException("右偏移溢出!"); } var size = value.GetSize(typeCode); if (_rightOffsetWrite + size > _buffer.Length) { throw new IndexOutOfRangeException("右偏移溢出!"); } if (WriteRemaining() < size) { throw new IndexOutOfRangeException("缓冲区溢出!"); } _rightOffsetWrite += value.CopyTo(typeCode, _buffer, _rightOffsetWrite); }
public void ShiftLeft(TypeCode typeCode, IConvertible value) { if (_leftOffsetWrite < 0) { throw new IndexOutOfRangeException("左偏移溢出!"); } var size = value.GetSize(typeCode); if (_leftOffsetWrite < size) { throw new IndexOutOfRangeException("左偏移溢出!"); } if (WriteRemaining() < size) { throw new IndexOutOfRangeException("缓冲区溢出!"); } _leftOffsetWrite -= size; value.CopyTo(typeCode, _buffer, _leftOffsetWrite); }