void PackVIntIsOrderableForPositiveCore(long t) { var buf1 = new byte[9]; var o1 = 0; PackUnpack.PackVInt(buf1, ref o1, t - 1); var buf2 = new byte[9]; var o2 = 0; PackUnpack.PackVInt(buf2, ref o2, t); if (t >= int.MinValue && t <= int.MaxValue) { Assert.Equal(o2, PackUnpack.LengthVInt((int)t)); } Assert.Equal(o2, PackUnpack.LengthVInt(t)); Assert.Equal(o2, PackUnpack.LengthVInt(buf2, 0)); Assert.True(0 > BitArrayManipulation.CompareByteArray(buf1, o1, buf2, o2)); var o1A = 0; Assert.Equal(t - 1, PackUnpack.UnpackVInt(buf1, ref o1A)); Assert.Equal(o1, o1A); var o2A = 0; Assert.Equal(t, PackUnpack.UnpackVInt(buf2, ref o2A)); Assert.Equal(o2, o2A); }
public long ReadVInt64() { NeedOneByteInBuffer(); var l = PackUnpack.LengthVInt(Buf, Pos); long res; if (Pos + l <= End) { res = PackUnpack.UnpackVInt(Buf, ref Pos); } else { res = (Buf[Pos] >= 0x80) ? 0 : -1; if (l < 8) { res <<= 8 - l; } res += Buf[Pos] & (0xff >> l); do { Pos++; res <<= 8; NeedOneByteInBuffer(); res += Buf[Pos]; l--; } while (l > 1); Pos++; } return(res); }
public void WriteVInt64(long value) { var len = PackUnpack.LengthVInt(value); if ((uint)_buf.Length < (uint)len) { Resize(len); } PackUnpack.UnsafePackVInt(ref PackUnpack.UnsafeGetAndAdvance(ref _buf, len), value, len); }
public void WriteVInt64(long value) { var len = PackUnpack.LengthVInt(value); if ((uint)Buf.Length < len) { if (!Resize(len)) { Span <byte> buf = stackalloc byte[(int)len]; ref var bufRef = ref MemoryMarshal.GetReference(buf); PackUnpack.UnsafePackVInt(ref bufRef, value, len); WriteBlock(ref bufRef, len); return; } }
public void WriteVInt64(long value) { var l = PackUnpack.LengthVInt(value); if (Pos + l > End) { FlushBuffer(); if (Pos + l > End) { var b = new byte[l]; int i = 0; PackUnpack.PackVInt(b, ref i, value); WriteBlock(b); return; } } PackUnpack.PackVInt(Buf, ref Pos, value); }
public void WriteVInt64(long value) { var len = PackUnpack.LengthVInt(value); if (Pos + len > End) { FlushBuffer(); if (Pos + len > End) { Span <byte> buf = stackalloc byte[len]; PackUnpack.UnsafePackVInt(ref MemoryMarshal.GetReference(buf), value, len); WriteBlock(buf); return; } } PackUnpack.UnsafePackVInt(ref Unsafe.AddByteOffset(ref MemoryMarshal.GetReference(Buf.AsSpan()), (IntPtr)Pos), value, len); Pos += len; }
public void SkipVInt64() { NeedOneByteInBuffer(); var l = PackUnpack.LengthVInt(Buf, Pos); if (Pos + l <= End) { Pos += l; } else { do { Pos++; NeedOneByteInBuffer(); l--; } while (l > 1); Pos++; } }