Skip to content

DrBrad/Bencode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bencode

This is an implementation of Bencode for Java. Bencode is used for DHTs, Torrents, and Google DataServers. Its a lightweight fast data serialization. Wikipedia

I have also made an implementation of Bencode with Rust, JavaScript and PHP.

Benchmarks

Here are some examples of this library compared to other major data serialization methods.

Serialization / Encoding

Method Time in Mills
Bencode 57
JSON 230

Parsing

Method Time in Mills
Bencode 83
JSON 281

Byte Size when encoded

Method Bytes
Bencode 10134606
JSON 51538417

Library

The JAR for the library can be found here: Bencode JAR

Usage

Here are some examples of how to use the Bencode library.

Bencode Array

//FROM LIST
ArrayList<String> l = new ArrayList<>();
BencodeArray bar = new BencodeArray(l);

//FROM BYTES
byte[] b; //ARRAY OF BYTES
BencodeArray bar = new BencodeArray(b);

//CREATE BENCODE
BencodeArray bar = new BencodeArray();

Bencode Object | Map

//FROM MAP
HashMap<String, String> l = new HashMap<>();
BencodeObject bob = new BencodeObject(l);

//FROM BYTES
byte[] b; //ARRAY OF BYTES
BencodeObject bob = new BencodeObject(b);

//CREATE BENCODE
BencodeObject bob = new BencodeObject();

Put | Get data

//ARRAY
bar.put(1000);
bar.get(0);

//MAP
bob.put("KEY", 100);
bob.get("KEY");

Encoding to byte array

bar.encode();

Readable String

System.out.println(bar.toString());