A node library for encoding and decoding bencoded data, according to the BitTorrent specification.
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.
Install with npm
npm install bencode
importbencodefrom'bencode'You can also use node-bencode with browserify to be able to use it in a lot of modern browsers.
vardata={string: 'Hello World',integer: 12345,dict: {key: 'This is a string within a dictionary'},list: [1,2,3,4,'string',5,{}]}varresult=bencode.encode(data)NOTE As of bencode@0.8.0, boolean values will be cast to integers (false -> 0, true -> 1).
d4:dictd3:key36:This is a string within a dictionarye7:integeri12345e4:listli1ei2ei3ei4e6:stringi5edee6:string11:Hello Worlde
vardata=Buffer.from('d6:string11:Hello World7:integeri12345e4:dictd3:key36:This is a string within a dictionarye4:listli1ei2ei3ei4e6:stringi5edeee')varresult=bencode.decode(data){string: <Buffer48656c6c6f20576f726c64>,
integer: 12345,
dict: {key: <Buffer54686973206973206120737472696e672077697468696e20612064696374696f6e617279>},
list: [ 1, 2, 3, 4, <Buffer737472696e67>, 5, {} ]
}Automagically convert bytestrings to strings:
varresult=bencode.decode(data,'utf8'){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|BooleandataBufferbufferNumberoffset
Returns Buffer
BufferdataNumberstartNumberendStringencoding
If encoding is set, bytestrings are
automatically converted to strings.
Returns Object | Array | Buffer | String | Number
Buffer|Array|String|Object|Number|Booleanvalue