private static ulong ToTarget(byte[] bytes, int sizeBites)
{
int shift = 0;
ulong result = 0;
foreach (ulong byteValue in bytes)
{
ulong tmp = byteValue & 0x7f;
result |= tmp << shift;
if (shift > sizeBites)
{
throw new ArgumentOutOfRangeException("bytes", "Byte array is too large.");
}
if ((byteValue & 0x80) != 0x80)
{
return result;
}
shift += 7;
}
throw new ArgumentException("Cannot decode varint from byte array.", "bytes");
}