Advertisement
stoneharry

Untitled

Sep 22nd, 2013
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.23 KB | None | 0 0
  1.         internal void WriteInt32( int intVal )
  2.         {
  3.             WriteBits(intVal, 32);
  4.         }
  5.  
  6.         internal void WriteBits<T>(T valz, int numBits)
  7.         {
  8.             if (numBits > 0)
  9.             {
  10.                 _numBits += numBits;
  11.                 while (true)
  12.                 {
  13.                     int pos7 = (WritePos & 7);
  14.                     int unk = 8 - pos7;
  15.                     var lShift = (char) (1 << unk);
  16.                     int subNum;
  17.  
  18.                     if (unk < numBits)
  19.                         subNum = unk;
  20.                     else
  21.                     {
  22.                         lShift = (char) (1 << numBits);
  23.                         subNum = numBits;
  24.                     }
  25.  
  26.                     numBits -= subNum;
  27.  
  28.                     var firstHalf = (char) (~((lShift - 1) << pos7));
  29.  
  30.                     var shifted = (char) Shift(valz, numBits);
  31.                     var secondHalf = (char) (((lShift - 1) & shifted) << pos7);
  32.  
  33.                     Buffer[WritePos >> 3] = (byte) (Buffer[WritePos >> 3] & firstHalf | secondHalf);
  34.  
  35.                     WritePos += subNum;
  36.  
  37.                     if (numBits == 0)
  38.                         return;
  39.                 }
  40.             }
  41.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement