CSPspEmu.Hle.Formats.Font.BitReader.ReadBits C# (CSharp) Method

ReadBits() public method

public ReadBits ( int Count ) : uint
Count int
return uint
        public uint ReadBits(int Count)
        {
            int Value = 0;
            int ReadOffset = 0;

            while (Count > 0)
            {
                int LeftInByte = 8 - this.BitOffset;
                int ReadCount = Math.Min(Count, LeftInByte);
                //Console.WriteLine("Byte[{0}] = {1}", ByteOffset, Data[ByteOffset]);
                Value |= ((Data[ByteOffset] >> this.BitOffset) & ((1 << ReadCount) - 1)) << ReadOffset;

                ReadOffset += ReadCount;
                BitOffset += ReadCount;
                if (BitOffset == 8)
                {
                    BitOffset = 0;
                    ByteOffset++;
                }
                Count -= ReadCount;
            }

            return (uint)Value;
        }

Usage Example

Example #1
0
        public static IEnumerable<KeyValuePair<uint, uint>> FixedBitReader(byte[] Data, int BitCount = 0, int Offset = 0)
        {
            using (var BitReader = new BitReader(Data))
            {
                BitReader.Position = Offset;

                uint Index = 0;
                while (BitReader.BitsLeft >= BitCount)
                {
                    yield return new KeyValuePair<uint, uint>(Index++, BitReader.ReadBits(BitCount));
                }
            }
        }
All Usage Examples Of CSPspEmu.Hle.Formats.Font.BitReader::ReadBits