本文整理汇总了C#中ByteBuffer.limit方法的典型用法代码示例。如果您正苦于以下问题:C# ByteBuffer.limit方法的具体用法?C# ByteBuffer.limit怎么用?C# ByteBuffer.limit使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ByteBuffer
的用法示例。
在下文中一共展示了ByteBuffer.limit方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: compress
public bool compress(ByteBuffer @in, ByteBuffer @out, ByteBuffer overflow)
{
int inBytes = @in.remaining();
// I should work on a patch for Snappy to support an overflow buffer
// to prevent the extra buffer copy.
byte[] compressed = new byte[Snappy.maxCompressedLength(inBytes)];
int outBytes =
Snappy.compress(@in.array(), @in.arrayOffset() + @in.position(), inBytes,
compressed, 0);
if (outBytes < inBytes)
{
int remaining = @out.remaining();
if (remaining >= outBytes)
{
Array.Copy(compressed, 0, @out.array(), @out.arrayOffset() +
@out.position(), outBytes);
@out.position(@out.position() + outBytes);
}
else
{
Array.Copy(compressed, 0, @out.array(), @out.arrayOffset() +
@out.position(), remaining);
@out.position(@out.limit());
Array.Copy(compressed, remaining, overflow.array(),
overflow.arrayOffset(), outBytes - remaining);
overflow.position(outBytes - remaining);
}
return true;
}
else
{
return false;
}
}
示例2: decompress
public void decompress(ByteBuffer @in, ByteBuffer @out)
{
using (ByteBufferInputStream input = new ByteBufferInputStream(@in.duplicate()))
using (DeflateStream inflater = new DeflateStream(input, CompressionMode.Decompress))
using (ByteBufferOutputStream output = new ByteBufferOutputStream(@out))
{
inflater.CopyTo(output);
}
@out.flip();
@in.position(@in.limit());
}
示例3: decompress
public void decompress(ByteBuffer @in, ByteBuffer @out)
{
if (@in.isDirect() && @out.isDirect())
{
directDecompress(@in, @out);
return;
}
int inOffset = @in.position();
int uncompressLen =
Snappy.uncompress(@in.array(), @in.arrayOffset() + inOffset,
@in.limit() - inOffset, @out.array(), @out.arrayOffset() + @out.position());
@out.position(uncompressLen + @out.position());
@out.flip();
}