> For the complete documentation index, see [llms.txt](https://kinematicsoup.gitbook.io/reactor/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kinematicsoup.gitbook.io/reactor/api-reference/ks.reactor/ks.reactor.ksbitreader.md).

# Class ksBitReader

Namespace: [KS.Reactor](/reactor/api-reference/ks.reactor.md)\
Assembly: KSCommon.dll

Reads bit-packed data from a [ksStreamBuffer](/reactor/api-reference/ks.reactor/ks.reactor.ksstreambuffer.md) that was written using a [ksBitWriter](/reactor/api-reference/ks.reactor/ks.reactor.ksbitwriter.md).

```csharp
public class ksBitReader
```

#### Inheritance

[object](https://learn.microsoft.com/dotnet/api/system.object) â† [ksBitReader](/reactor/api-reference/ks.reactor/ks.reactor.ksbitreader.md)

#### Inherited Members

[object.Equals(object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals\(system-object\)), [object.Equals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals\(system-object-system-object\)), [object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode), [object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype), [object.MemberwiseClone()](https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone), [object.ReferenceEquals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.referenceequals), [object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)

## Constructors

### ksBitReader(ksStreamBuffer) <a href="#ks_reactor_ksbitreader__ctor_ks_reactor_ksstreambuffer" id="ks_reactor_ksbitreader__ctor_ks_reactor_ksstreambuffer"></a>

Constructor

```csharp
public ksBitReader(ksStreamBuffer buffer)
```

#### Parameters

`buffer` [ksStreamBuffer](/reactor/api-reference/ks.reactor/ks.reactor.ksstreambuffer.md)

Buffer to read from.

## Methods

### Align() <a href="#ks_reactor_ksbitreader_align" id="ks_reactor_ksbitreader_align"></a>

Advances the position to the next byte if the position is not at a byte boundary.

```csharp
public void Align()
```

### ReadBits(int) <a href="#ks_reactor_ksbitreader_readbits_system_int32" id="ks_reactor_ksbitreader_readbits_system_int32"></a>

Reads up to 32 bits from the buffer.

```csharp
public uint ReadBits(int bits)
```

#### Parameters

`bits` [int](https://learn.microsoft.com/dotnet/api/system.int32)

Number of bits to read.

#### Returns

[uint](https://learn.microsoft.com/dotnet/api/system.uint32)

Value

### ReadBits64(int) <a href="#ks_reactor_ksbitreader_readbits64_system_int32" id="ks_reactor_ksbitreader_readbits64_system_int32"></a>

Reads up to 64 bits from the buffer.

```csharp
public ulong ReadBits64(int bits)
```

#### Parameters

`bits` [int](https://learn.microsoft.com/dotnet/api/system.int32)

Number of bits to read.

#### Returns

[ulong](https://learn.microsoft.com/dotnet/api/system.uint64)

Value

### ReadBool() <a href="#ks_reactor_ksbitreader_readbool" id="ks_reactor_ksbitreader_readbool"></a>

Reads 1 bit from the buffer.

```csharp
public bool ReadBool()
```

#### Returns

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

True if the bit was 1.
