Coder Social home page Coder Social logo

bitfield's Introduction

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 }

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 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

bitfield's People

Contributors

astro avatar dependabot-preview[bot] avatar dependabot[bot] avatar fb55 avatar feross avatar greenkeeper[bot] avatar jimmywarting avatar mafintosh avatar tjkoury avatar transitive-bullshit avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.