npm install bencodeA node library for encoding and decoding bencoded data,
according to the BitTorrent specification.
- About BEncoding
- Installation
- Usage
- API
from Wikipedia:
Bencode (pronounced like B encode) is the encoding used by the peer-to-peer
file sharing system BitTorrent for storing and transmitting loosely structured data.
It supports four different types of values:
- byte strings
- integers
- lists
- dictionaries
Bencoding is most commonly used in torrent files.
These metadata files are simply bencoded dictionaries.
```
npm install bencode
`javascript`
import bencode from 'bencode'
You can also use node-bencode with browserify to be able to use it in a lot of modern browsers.
`javascript
var data = {
string: 'Hello World',
integer: 12345,
dict: {
key: 'This is a string within a dictionary'
},
list: [ 1, 2, 3, 4, 'string', 5, {} ]
}
var result = bencode.encode( data )
`
NOTE As of bencode@0.8.0, boolean values will be cast to integers (false -> 0, true -> 1).
#### Output
``
d4:dictd3:key36:This is a string within a dictionarye7:integeri12345e4:listli1ei2ei3ei4e6:stringi5edee6:string11:Hello Worlde
`javascript`
var data = Buffer.from('d6:string11:Hello World7:integeri12345e4:dictd3:key36:This is a string within a dictionarye4:listli1ei2ei3ei4e6:stringi5edeee')
var result = bencode.decode( data )
#### Output
`javascript`
{
string:
integer: 12345,
dict: {
key:
},
list: [ 1, 2, 3, 4,
}
Automagically convert bytestrings to strings:
`javascript`
var result = bencode.decode( data, 'utf8' )
#### Output
`javascript`
{
string: 'Hello World',
integer: 12345,
dict: {
key: 'This is a string within a dictionary'
},
list: [ 1, 2, 3, 4, 'string', 5, {} ]
}
The API is compatible with the abstract-encoding specification.
> Buffer | Array | String | Object | Number | Boolean __data__Buffer
> __buffer__Number
> __offset__
Returns Buffer
> Buffer __data__Number
> __start__Number
> __end__String
> __encoding__
If encoding is set, bytestrings are
automatically converted to strings.
Returns Object | Array | Buffer | String | Number
> Buffer | Array | String | Object | Number | Boolean` __value__