婴儿
字节操控的刀子.
特征 :
- 易地在数据格式之间移动!
- Base58, Base64, Bech32 等间编码/解码.
Buff被确认为本地对象Uint8Array。 。 。 .- 预置、 附加、 排序、 分拆和加入多种格式的数组.
- 读取并作前缀瓦林.
- 将数据块转换成可消耗流 .
- 用途
DataView.setUint8为超快表演. - 支持所有事物的内向!
如何导入
这个库旨在支持在节点和浏览器环境中的经典和现代无害环境管理进口.
通过国家预防机制或纱线安装的实例:
npm install @cmdcode/buff || yarn add @cmdcode/buff
经典导入到节点项目 :
const { Buff, Bytes } = require('@cmdcode/buff')
现代导入到节点项目 :
import { Buff, Bytes } from '@cmdcode/buff'
经典导入到基于浏览器的项目 :
<script src="https://unpkg.com/@cmdcode/buff/dist/browser.js"></script>
<script>
const { Buff, Bytes } = window.buff
</script>
现代导入到基于浏览器的项目 :
<script type="module">
import { Buff, Bytes } from "https://unpkg.com/@cmdcode/buff/dist/module.mjs"
</script>
如何使用
这个 Buff 类是基数的缩放 Uint8Array 课。 它提供了一个Uint8Array的同一种默认功能,可以作为Uint8Array的倒置替代. Typescript将Buff视为Uint8Array对象.
import { Buff, Bytes } from '@cmdcode/buff'
// Bytes covers value types that are convertable to Uint8Array.
type Bytes = string | number | bigint | Uint8Array | Buff
// You can optionally specify the endianess of data.
type Endian = 'le' | 'be'
const bytes = new Buff (
data : Bytes | Bytes[] | ArrayBuffer,
size ?: number, // Specify the size of the array (for padding)
endian ?: Endian // Specify the endianess of the array.
)
您可以从许多不同的类型和格式转换为 Buff 对象.
Buff
.any = (data : any, size ?: number) => Buff,
.raw = (data : Uint8Array, size ?: number) => Buff,
.str = (data : string, size ?: number) => Buff,
.hex = (data : string, size ?: number) => Buff,
.bin = (data : string, size ?: number) => Buff,
.num = (data : number, size ?: number) => Buff,
.big = (data : bigint, size ?: number) => Buff,
.bytes = (data : Bytes, size ?: number) => Buff,
.json = (data : T, replacer ?: Replacer) => Buff,
.b58chk = (data : string) => Buff,
.base64 = (data : string) => Buff,
.b64url = (data : string) => Buff,
.bech32 = (
data : string, // Data to be encoded
limit ?: number, // Enforce a character limit.
chk_prefix ?: string // Enforce a certain prefix.
) => Buff,
.bech32m = (
data : string, // Data to be encoded
limit ?: number, // Enforce a character limit.
chk_prefix ?: string // Enforce a certain prefix.
) => Buff
}
与 Buff,您可以访问广泛的API,用于格式之间的转换.
const bytes = new Buff(data)
/* Quicky convert into many formats using getters. */
bytes
.arr => number[] // Convert to a number array.
.num => number // Convert to a Number.
.big => bigint // Convert to a BigInt.
.str => string // Convert to a UTF8 string.
.hex => string // Convert to a hex string.
.raw => Uint8Array // Convert to a pure Uint8Array.
.bin => string // Convert to a binary string.
.b58chk => string // Convert to base58 with checksum.
.base64 => string // Convert to base64 string.
.b64url => string // Convert to base64url string.
.digest => Buff // Convert to a sha256 digest.
.id => string // Convert to a digest (hex string).
.stream => Stream // Convert to a Stream object.
/* There are a few export methods that support extra params. */
bytes
.toNum : (endian ?: Endian) => number
.toBig : (endian ?: Endian) => bigint
.toBin : () => string
.toHash : () => Buff
.toJson : (reviver ?: Reviver) => T
.toBech32 : (prefix : string, limit ?: number) => string
.toBech32m : (prefix : string, limit ?: number) => string
除了格式转换之外,还可以执行许多其他方便的任务.
Buff = {
// Standard UTF-8 string-to-bytes encoding.
encode : (str : string) => Uint8Array,
// Standard UTF-8 bytes-to-string decoding.
decode : (bytes : Uint8Array) => string,
// Same as Uint8Array.from(), but returns a Buff object.
from (data : Uint8Array | number[]) => Buff
// Same as Uint8Array.of(), but returns a Buff object.
of (...data : number[]) => Buff,
// Join together multiple arrays of bytes.
join : (array : Bytes[]) => Buff,
// Sort multiple arrays of bytes in lexicographic order.
sort (arr : Bytes[], size ?: number) => Buff[],
// Return a buffer object with random data (uses webcrypto).
random (size : number) => Buff,
// Converts a number into a 'varint' for byte streams.
varInt : (num : number, endian ?: Endian) => Buff
}
const bytes = new Buff(data)
bytes
// Append data to your ubber object
.append (data : Bytes) => Buff
// Prepend data to your buffer object.
.prepend (data : Bytes) => Buff
// Encode the size of your buffer as a varint and prepend it.
.prefixSize (endian ?: Endian) => Buff
// Same as Uint8Array.reverse(), but returns a Buff object.
.reverse () => Buff
// Identical to Uint8Array.set() method.
.set (array : ArrayLike<number>, offset ?: number) => void
// Same as Uint8Array.slice(), but returns a Buff object.
.slice (start ?: number, end ?: number) => Buff
// Same as Uint8Array.subarray(), but returns a Buff object.
.subarray (begin ?: number, end ?: number) => Buff
// Same as Uint8Array.set(), but allows Bytes as input.
.write (data : Bytes, offset ?: number) => void
这个 Stream 工具将取出一连串的数据,并允许您用字节表示.
import { Stream } from '@cmdcode/buff'
// Convert data into a stream object.
const stream = new Stream(data)
// You can convert a buff object into a stream.
const stream = new Buff(data).stream
stream
// Reads x number of bytes, does not consume the stream.
.peek(size: number) => Buff
// Reads x number of bytes, consumes the stream.
.read(size: number) => bytes
// Reads the next bytes(s) as a varint, returns the number value.
.readSize (endian ?: Endian) => number
依赖关系
这个库使用最小的依赖.
@ scure/ base (英语)
用于执行多种格式的编码和解码.
https://github.com/paulmiller/scure-base (英语)
@noble/hashes (英语)
用于创建散列 sha256。 。 。 .
https://github.com/paulmiller/noble-hashes 互联网档案馆的存檔,存档日期2013-12-22
特别感谢保罗·米勒的出色工作.
错误/ 问题
请随意在议题页面上张贴任何问题或错误报告!
开发/测试
这个项目使用 eslint 财务报告和审定财务报表 typescript 促进发展, tape 用于单位测试,以及 rollup 为捆绑释放.
yarn test || npm run test
yarn release || npm run release
捐款
欢迎所有的贡献!
许可证
随便你用这个密码! 没有保证!