Exemple #1
0
        public u32 u32(RawBitReader <TMemory> b)
        {
            u32 buffer = 0;
            u32 value  = 0;
            i32 shift  = 0;

            do
            {
                // has no guard against corrupted bytes - may read overflow
                buffer = b.u8Raw();
                value |= (buffer & 0b0111_1111u) << shift;
                shift += 7;
            }while ((buffer & 0b1000_0000u) > 0);

            return(value);

            // u32 value = 0;
            // for (var i = 0; i < sizeof(u32) + 1; i++)
            // {
            //     byte readByte = b.u8();
            //     value |= (readByte & 0b0111_1111) << i * 7;
            //     if ((readByte & 0b1000_0000) == 0)
            //         return value;
            // }

            return(value);
        }
Exemple #2
0
 public u8 u8(RawBitReader <TMemory> b) => b.u8Raw();