Bencode de/encoder
npm install bencode-torrentA node library for encoding and decoding bencoded data,
according to the BitTorrent specification.
- About BEncoding
- Installation
- Performance
- 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
19,235 op/s » bencode
9,684 op/s » bencoding
11,988 op/s » dht_bencode
8,946 op/s » bncode
18,744 op/s » dht
`$3
`
33,786 op/s » bencode
55,040 op/s » bencoding
40,872 op/s » dht_bencode
2,533 op/s » bncode
30,292 op/s » dht
`Benchmarks run on an 1.8 GHz Intel Core i5 with io.js 1.0.4
To run the benchmarks simply use
`
npm run bench
`Usage
`javascript
var bencode = require( 'bencode' )
`You can also use node-bencode with browserify to be able to use it in a lot of modern browsers.

$3
`javascriptvar 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 )
`#### Output
`
d4:dictd3:key36:This is a string within a dictionarye7:integeri12345e4:listli1ei2ei3ei4e6:stringi5edee6:string11:Hello Worlde
`$3
`javascript
var data = new Buffer( 'd6:string11:Hello World7:integeri12345e4:dictd3:key36:This is a string within a dictionarye4:litli1ei2ei3ei4e6:stringi5edeee' )
var result = bencode.decode( data )
`#### Output
`javascript
{
string: ,
integer: 12345,
dict: {
key:
},
list: [ 1, 2, 3, 4, , 5, {} ]
}
`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, {} ]
}
`API
$3
>
Buffer | Array | String | Object | Number __data__Returns
Buffer$3
>
Buffer __data__
> String __encoding__If
encoding is set, bytestrings are
automatically converted to strings.Returns
Object | Array | Buffer | String | Number`