Bencode (čte se jako B-encode) je způsob kódování dat, které umožňuje kódovat řetězce, celá čísla, seznamy a slovníky. Tato metoda je známá především proto, že je použita v protokolu BitTorrent. Je to velmi jednoduchý a platformově nezávislý formát, podobně jako XML nebo JSON. Není však bohužel příliš dobře čitelný člověkem, pokud se do něj nepřidají například mezery.

Řetězec

Řetezec je kódován takto:

  • přirozené číslo značící délku řetězce v bajtech jako ASCII (dekadicky)
  • : (dvojtečka)
  • řetězec
    • kódování není standardizováno, ale většina klientů podporuje UTF-8 a ASCII
HodnotaZakódovaná hodnota
hello5:hello
Hello world!12:Hello world!
(prázdný řetězec)0:

Celé číslo

Celé číslo je kódováno takto:

  • i
  • - (volitelně pro záporná čísla)
  • vlastní číslo jako ASCII (dekadicky)
    • čísla různá od nuly nesmí začínat nulou
    • záporná nula je zakázaná
  • e
HodnotaZakódovaná hodnota
0i0e
42i42e
-487i-487e

Seznamy

Seznam může obsahovat libovolné hodnoty (řetězce, čísla, jiné seznamy a slovníky) a je kódován takto:

  • l
  • obsah seznamu (libovolné zakódované hodnoty)
  • e
HodnotaZakódovaná hodnota
[0, 1, 1, 2, 3]li0ei1ei1ei2ei3ee
[hello]l5:helloe
[0, hello, -4]li0e5:helloi-4ee

Slovníky

Slovník je posloupnost párů klíč - hodnota, kde klíč je řetězec. Hodnota může být libovolného typu.

  • l
  • obsah slovníku
    • za klíčem okamžitě následuje jeho hodnota
    • klíč musí být řetězec
  • e
HodnotaZakódovaná hodnota
a → 10, b → [0, 1]d1:ai10e1:bli0ei1eee

Vlastnosti

Reference