https://github.com/fb55/bitfield
A bitfield implementation using buffers, compliant with the BitTorrent spec.
https://github.com/fb55/bitfield
bitfield buffer javascript
Last synced: 25 days ago
JSON representation
A bitfield implementation using buffers, compliant with the BitTorrent spec.
- Host: GitHub
- URL: https://github.com/fb55/bitfield
- Owner: fb55
- License: mit
- Created: 2012-11-06T18:16:09.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2025-05-15T00:02:13.000Z (26 days ago)
- Last Synced: 2025-05-15T00:39:08.730Z (26 days ago)
- Topics: bitfield, buffer, javascript
- Language: TypeScript
- Homepage:
- Size: 3.82 MB
- Stars: 86
- Watchers: 3
- Forks: 17
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# bitfield
A simple bitfield, compliant with the BitTorrent spec.
npm install bitfield
#### Example
```js
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
- [constructor](#constructor)
### Properties
- [buffer](#buffer)
### Methods
- [forEach](#foreach)
- [get](#get)
- [set](#set)## 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 } |**grow:**
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).
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 `i`th 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`, `offset?`: number): void
Set the bits in the bitfield to the values in the given array.
#### Parameters:
| Name | Type | Default value | Description |
| -------- | -------------------- | ------------- | ------------------------------------- |
| `array` | `ArrayLike` | - | Array of booleans to set the bits to. |
| `offset` | number | 0 | Index of the first bit to set. |**Returns:** void
## License
MIT