# bops

> buffer operations

Latest version **1.0.1** (published 2020-03-24) · MIT license · 0 weekly downloads

## Install

```sh
npm install bops
pnpm add bops
yarn add bops
bun add bops
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.1 |
| Published | 2020-03-24 |
| First published | 2013-05-04 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 39.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 107 |
| Author | Chris Dickinson |
| Maintainers | chrisdickinson |
| Keywords | buffer, operations, binary |

## Links

- npm: https://www.npmjs.com/package/bops
- Repository: https://github.com/chrisdickinson/bops
- Homepage: https://github.com/chrisdickinson/bops#readme
- Issues: https://github.com/chrisdickinson/bops/issues
- npm.io page: https://npm.io/package/bops

## Dependencies (2)

- [to-utf8](https://npm.io/package/to-utf8.md) 0.0.1
- [base64-js](https://npm.io/package/base64-js.md) 1.0.2

## Alternatives

- [flatbuffers](https://npm.io/package/flatbuffers.md) — 6.0M weekly downloads
- [jwt-simple](https://npm.io/package/jwt-simple.md) — 259.5K weekly downloads
- [@exodus/patch-broken-hermes-typed-arrays](https://npm.io/package/@exodus/patch-broken-hermes-typed-arrays.md) — 28.5K weekly downloads
- [@native-to-anchor/buffer-layout](https://npm.io/package/@native-to-anchor/buffer-layout.md) — 12.2K weekly downloads
- [binary-parser-encoder](https://npm.io/package/binary-parser-encoder.md) — 5.3K weekly downloads

## Recent versions

- 1.0.1 (latest) — 2020-03-24
- 1.0.0 — 2016-01-18
- 0.1.1 — 2013-11-28
- 0.1.0 — 2013-09-29
- 0.0.7 — 2013-09-28
- 0.0.6 — 2013-05-20
- 0.0.5 — 2013-05-10
- 0.0.4 — 2013-05-10
- 0.0.3 — 2013-05-05
- 0.0.2 — 2013-05-05
- 0.0.1 — 2013-05-04

## README

# bops

[![Build Status](https://travis-ci.org/chrisdickinson/tar-parse.png)](https://travis-ci.org/chrisdickinson/tar-parse)
[![TESTLING](https://ci.testling.com/chrisdickinson/bops.png)](https://ci.testling.com/chrisdickinson/bops)
[![NPM](https://nodei.co/npm/bops.png?downloads=true&stars=true)](https://nodei.co/npm/bops/)

buffer/typed array agnostic buffer operations.

`bops` presents a JavaScript API for working with binary data that will work exactly the same in supported browsers and in node. due to the way that `Buffer` is implemented in node it is impossible to take code written against the `Buffer` API and make it work on top of binary data structures (Array Buffers and Typed Arrays) in the browser.

instead you have to fake the API on top of `Object`, but `Object` isn't designed for holding raw binary data and will be really slow/memory inefficient for many common binary use cases (parsing files, writing files, etc).

use `bops` in place of `Buffer` or `Uint8Array` to make your binary JS code fast + portable.

```javascript
var binary = require('bops')

binary.readUInt8(new Buffer(10), 0) // === 10

```

in browser, will default to using `Uint8Array` instances.
in node, will default to using `Buffer` instances.

## API

> ## supported encodings
> * utf8
> * hex
> * base64

#### bops.from(str, encoding="utf8") -> buf

given a string (and optional encoding) return a native buffer instance.
also accepts arrays.

#### bops.to(buf, encoding="utf8") -> str

given a native buffer (and optional encoding) return a string.

#### bops.is(buf) -> bool

given a native buffer returns true.  Returns false for other values.

#### bops.subarray(buf, start[, end]) -> buf

return a view onto the original buffer.

#### bops.join([buf, buf, buf]) -> buf

compile several buffers into a single buffer.

#### bops.create(size) -> buf

create a native buffer instance of `size`.

#### bops.copy(source, target, target_start, source_start, source_end)

perform a fast copy from one native buffer to another.

#### readUInt8(buf, at)
#### readInt8(buf, at)
#### readUInt16LE(buf, at)
#### readUInt32LE(buf, at)
#### readInt8(buf, at)
#### readInt16LE(buf, at)
#### readInt32LE(buf, at)
#### readFloatLE(buf, at)
#### readDoubleLE(buf, at)
#### readUInt16BE(buf, at)
#### readUInt32BE(buf, at)
#### readInt16BE(buf, at)
#### readInt32BE(buf, at)
#### readFloatBE(buf, at)
#### readDoubleBE(buf, at)

read a value from a buffer at a given byte offset.

#### writeUInt8(buf, value, at)
#### writeInt8(buf, value, at)
#### writeUInt16LE(buf, value, at)
#### writeUInt32LE(buf, value, at)
#### writeInt8(buf, value, at)
#### writeInt16LE(buf, value, at)
#### writeInt32LE(buf, value, at)
#### writeFloatLE(buf, value, at)
#### writeDoubleLE(buf, value, at)
#### writeUInt16BE(buf, value, at)
#### writeUInt32BE(buf, value, at)
#### writeInt16BE(buf, value, at)
#### writeInt32BE(buf, value, at)
#### writeFloatBE(buf, value, at)
#### writeDoubleBE(buf, value, at)

write a value to a buffer at a given byte offset.

# License

MIT

---
_Source: https://npm.io/package/bops · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
