54 lines
1.4 KiB
Markdown
54 lines
1.4 KiB
Markdown
|
# str2buf [![NPM](https://img.shields.io/npm/v/str2buf.svg)](https://npmjs.com/package/str2buf) [![Build](https://travis-ci.org/kevlened/str2buf.svg?branch=master)](https://travis-ci.org/kevlened/str2buf)
|
||
|
isomorphic string <=> buffer in 198 bytes
|
||
|
|
||
|
## Install
|
||
|
|
||
|
`npm install str2buf`
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
You must provide strings where each character is represented by a single byte (also known as the binary string format). For example, the output of a `atob` operation or any ASCII string would be allowed.
|
||
|
|
||
|
```javascript
|
||
|
const str2buf = require('str2buf')
|
||
|
|
||
|
str2buf.toUint8Array('hello')
|
||
|
// new Uint8Array([104,101,108,108,111])
|
||
|
|
||
|
str2buf.fromUint8Array(new Uint8Array([104,101,108,108,111]))
|
||
|
// 'hello'
|
||
|
|
||
|
str2buf.toBuffer('hello')
|
||
|
// ArrayBuffer
|
||
|
|
||
|
str2buf.fromBuffer(new Uint8Array([104,101,108,108,111]).buffer)
|
||
|
// 'hello'
|
||
|
```
|
||
|
|
||
|
## Can it be smaller?
|
||
|
|
||
|
If you use ES6 imports with a bundler that supports tree-shaking, yes!
|
||
|
|
||
|
```javascript
|
||
|
import { fromUint8Array } from 'str2buf'
|
||
|
```
|
||
|
|
||
|
#### Perf profile
|
||
|
|
||
|
```
|
||
|
⏱ browser performance on 1000 arrays or strings of size 25003:
|
||
|
str2buf.fromUint8Array: 245.842ms
|
||
|
str2buf.toUint8Array: 165.240ms
|
||
|
str2buf.fromBuffer: 234.920ms
|
||
|
str2buf.toBuffer: 160.021ms
|
||
|
|
||
|
⏱ node performance on 1000 arrays or strings of size 25003:
|
||
|
str2buf.fromUint8Array: 20.213ms
|
||
|
str2buf.toUint8Array: 15.655ms
|
||
|
str2buf.fromBuffer: 32.880ms
|
||
|
str2buf.toBuffer: 21.514ms
|
||
|
```
|
||
|
|
||
|
## License
|
||
|
|
||
|
MIT
|