Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zswang/jpacks
Binary data packing and unpacking.
https://github.com/zswang/jpacks
cstruct packer protobuffer unpack
Last synced: 16 days ago
JSON representation
Binary data packing and unpacking.
- Host: GitHub
- URL: https://github.com/zswang/jpacks
- Owner: zswang
- License: mit
- Created: 2015-10-29T13:46:08.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2017-06-19T15:34:43.000Z (over 7 years ago)
- Last Synced: 2024-10-14T11:49:44.483Z (30 days ago)
- Topics: cstruct, packer, protobuffer, unpack
- Language: JavaScript
- Size: 211 KB
- Stars: 56
- Watchers: 4
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coverage Status][coverage-image]][coverage-url]
# jpacks
Binary data packing and unpacking.
jpacks 一款强大的二进制结构编解码工具
支持复杂的结构:
e.g.
```js
// 定义结构
jpacks.def('User', {
age: 'uint8',
token: jpacks.array('byte', 10),
name: jpacks.shortString,
note: jpacks.longString,
contacts: jpacks.shortArray('User')
});var user = {
age: 6,
token: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
name: 'ss',
note: '你好世界!Hello World!',
contacts: [{
age: 10,
token: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
name: 'nn',
note: '风一样的孩子!The wind of the children!',
contacts: [{
age: 12,
token: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
name: 'zz',
note: '圣斗士星矢!Saint Seiya!',
contacts: []
}]
}, {
age: 8,
token: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
name: 'cc',
note: '快乐的小熊!Happy bear!',
contacts: []
}]
};// 组包
var buffer = jpacks.pack('User', user);// 解包
var user2 = jpacks.unpack('User', buffer);console.log(JSON.stringify(user2, null, ' '));
```## Features 功能性
+ Supports running in NodeJS and Browser. 支持运行在 NodeJS 和浏览器环境。
+ Can be nested definition. 支持嵌套定义。
+ Commonly used numerical types, including signed and unsigned. 常用的数值类型,包括有符号和无符号。
+ Supports array types, including fixed length or indefinite. 支持数组类型,包括定长或不定长。
+ Int64. 大整数处理。
+ Protocol Buffers. 支持处理 PB 协议。
+ Data compression and decompression. 数据压缩和解压。## Dependencies 依赖
+ [protobufjs](https://github.com/dcodeIO/protobuf.js)
+ [long](https://github.com/dcodeIO/long.js)## License 许可协议
MIT © [zswang](http://weibo.com/zswang)
[npm-url]: https://npmjs.org/package/jpacks
[npm-image]: https://badge.fury.io/js/jpacks.svg
[travis-url]: https://travis-ci.org/zswang/jpacks
[travis-image]: https://travis-ci.org/zswang/jpacks.svg?branch=master
[coverage-url]: https://coveralls.io/github/zswang/jpacks?branch=master
[coverage-image]: https://coveralls.io/repos/zswang/jpacks/badge.svg?branch=master&service=github