SHARE
TWEET

Untitled

a guest Jan 18th, 2019 51 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.             WriterCache<int>.SingleWriteCustom = (dst, value) =>
  2.             {
  3.                 if (value >= 0 && value <= sbyte.MaxValue)
  4.                 {
  5.                     WriterCache<byte>.SingleWriteValue(dst, (byte)value);
  6.                     return;
  7.                 }
  8.  
  9.                 while (value != 0)
  10.                 {
  11.                     var b = value & sbyte.MaxValue;
  12.                     value = (int)((uint)value >> 7);
  13.  
  14.                     if (value > 0)
  15.                         b |= 128;
  16.  
  17.                     WriterCache<byte>.SingleWriteValue(dst, (byte)b);
  18.                     dst++;
  19.                 }
  20.             };
  21.  
  22.             ReaderCache<int>.SingleReadCustom = (b) =>
  23.             {
  24.                 var result = 0;
  25.  
  26.                 for (var offset = 0; offset < 32; offset += 7, b++)
  27.                 {
  28.                     var readByte = ReaderCache<byte>.SingleReadValue(b);
  29.                     var hasNext = (readByte & 128) == 128;
  30.  
  31.                     if (offset > 0)
  32.                         result += (readByte & sbyte.MaxValue) << offset;
  33.                     else
  34.                         result += readByte & sbyte.MaxValue;
  35.  
  36.                     if (!hasNext)
  37.                         return result;
  38.                 }
  39.                 throw new ArgumentOutOfRangeException();
  40.             };
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top