be stored in lists and dictionaries; they may (and usually do) contain other lists and dictionaries. This allows for arbitrarily complex data structures to be encoded. Features & drawbacks Bencode is a very specialized kind of binary coding with some unique properties: For each possible (complex) value, there is only a single valid bencoding; i.e. there is a bijection between values and their encodings. This has the advantage that applications may compare bencoded values by comparing their encoded forms, eliminating the need to decode the values. Many BE codegroups can be decoded manually. Since the bencoded values often contain binary data, decoding may become quite complex. Bencode is not considered a human-readable encoding format. Bencoding serves similar purposes as data languages like JSON and YAML, allowing complex yet loosely structured data to be stored in a platform independent way. However, this uniqueness can cause some problems: There are very few bencode editors Because bencoded files contain binary data, and because of some of the intricacies involved in the way binary strings are typically stored, it is often not safe to edit bencode files in text editors. See also BitTorrent References External links Bencoding specification File_Bittorrent2 - Another PHP Bencode/decode implementation The original BitTorrent implementation in Python as standalone package Torrent File Editor cross-platform GUI editor for BEncode files bencode-tools - a C library for manipulating bencoded data and a XML schema like validator for bencode messages in Python Bento - Bencode library in Elixir. Beecoder - the file stream parser that de/encoding "B-encode" data format on Java using java.io.* stream Api. Bencode parsing in Java Bencode library in Scala Bencode parsing in C There are numerous Perl implementations on CPAN BitTorrent Data serialization formats