A simple bitfield, compliant with the BitTorrent spec.
npm install bitfield
import Bitfield from "bitfield";
const field = new Bitfield(256); // Create a bitfield with 256 bits.
field.set(128); // Set the 128th bit.
field.set(128, true); // Same as above.
field.get(128); // `true`
field.get(200); // `false` (all values are initialised to `false`)
field.get(1e3); // `false` (out-of-bounds is also false)
field.set(128, false); // Set the 128th bit to 0 again.
field.buffer; // The buffer used by the bitfield.
+ new BitField(data?
: number | Uint8Array, opts?
: BitFieldOptions): BitField
Name | Type | Default value | Description |
---|---|---|---|
data |
number | Uint8Array | 0 | Either a number representing the maximum number of supported bytes, or a Uint8Array. |
opts? |
{ grow: number } | { grow: 0 } | grow: If you If you want the Bitfield to grow indefinitely, pass |
Returns: BitField
• buffer: Uint8Array
The internal storage of the bitfield.
▸ forEach(fn
: (bit: boolean, index: number) => void, start?
: number, end?
: number): void
Loop through the bits in the bitfield.
Name | Type | Default value | Description |
---|---|---|---|
fn |
(bit: boolean, index: number) => void | - | Function to be called with the bit value and index. |
start |
number | 0 | Index of the first bit to look at. |
end |
number | this.buffer.length * 8 | Index of the first bit that should no longer be considered. |
Returns: void
▸ get(i
: number): boolean
Get a particular bit.
Name | Type | Description |
---|---|---|
i |
number | Bit index to retrieve. |
Returns: boolean
A boolean indicating whether the i
th bit is set.
▸ set(i
: number, value?
: boolean): void
Set a particular bit.
Will grow the underlying array if the bit is out of bounds and the grow
option is set.
Name | Type | Default value | Description |
---|---|---|---|
i |
number | - | Bit index to set. |
value |
boolean | true | Value to set the bit to. Defaults to true . |
Returns: void
▸ setAll(array
: ArrayLike<boolean>
, offset?
: number): void
Set the bits in the bitfield to the values in the given array.
Name | Type | Default value | Description |
---|---|---|---|
array |
ArrayLike<boolean> |
- | Array of booleans to set the bits to. |
offset |
number | 0 | Index of the first bit to set. |
Returns: void
MIT