SkillAgentSearch skills...

Bitfield

A bitfield implementation using buffers, compliant with the BitTorrent spec.

Install / Use

/learn @fb55/Bitfield
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

bitfield

A simple bitfield, compliant with the BitTorrent spec.

npm install bitfield

Example

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.

Class: BitField

Constructors

Properties

Methods

Constructors

constructor

+ new BitField(data?: number | Uint8Array, opts?: BitFieldOptions): BitField

Parameters:

| 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 } | <p>grow:<p>If you set an index that is out-of-bounds, the bitfield will automatically grow so that the bitfield is big enough to contain the given index, up to the given size (in bit). <p>If you want the Bitfield to grow indefinitely, pass Infinity. |

Returns: BitField

Properties

buffer

buffer: Uint8Array

The internal storage of the bitfield.

Methods

forEach

forEach(fn: (bit: boolean, index: number) => void, start?: number, end?: number): void

Loop through the bits in the bitfield.

Parameters:

| 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

get(i: number): boolean

Get a particular bit.

Parameters:

| Name | Type | Description | | ---- | ------ | ---------------------- | | i | number | Bit index to retrieve. |

Returns: boolean

A boolean indicating whether the ith bit is set.


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.

Parameters:

| 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

setAll(array: ArrayLike<boolean>, offset?: number): void

Set the bits in the bitfield to the values in the given array.

Parameters:

| 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

License

MIT

Related Skills

View on GitHub
GitHub Stars88
CategoryProduct
Updated1d ago
Forks18

Languages

TypeScript

Security Score

100/100

Audited on Mar 26, 2026

No findings