Bencode

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Bencode ist ein Datenformat. Es wird durch das Filesharing-Protokoll BitTorrent verwendet, um Daten zu speichern und auszutauschen.[1]

Das Format unterstützt vier Datentypen.[2]

Bencode wird unter anderem in .torrent-Dateien verwendet. Der BitTorrent-Standard spezifiziert dazu, dass diese Dateien, in der Spezifikation auch MetaInfo-Dateien genannt, bencodete assoziative Listen sein sollen.

Da es ein relativ simpel gehaltener Algorithmus ist, kann Bencode sehr leicht implementiert und geparst werden. Außerdem ist es immun gegen einige Probleme, die binäre Formate oft betreffen. So ist zum Beispiel die Byte-Reihenfolge irrelevant.

Encoding[Bearbeiten | Quelltext bearbeiten]

Bencode nutzt ASCII-Buchstaben als Separatoren.

Zahlen[Bearbeiten | Quelltext bearbeiten]

Zahlen werden als i<zahl>e codiert. Dabei ist <zahl> die ASCII-Version der Zahl, zur Basis 10. Negative Zahlen werden mit einem vorangestellten Minus-Symbol ausgegeben. Bencode unterstützt keine Festkomma- oder Gleitkommazahlen.

Zahl Bencode
−234 i-234e
0 i0e
29410 i29410e

Zeichenketten[Bearbeiten | Quelltext bearbeiten]

Zeichenketten werden als <länge>:<inhalt> ausgegeben. Dabei ist <länge> die Länge, zur Basis 10, und <inhalt> die Zeichenkette an sich. Leere Zeichenketten werden mit der Länge Null ausgegeben.

Zeichenkette Bencode
(leere Zeichenkette) 0:
Hallo Welt 10:Hallo Welt

Listen[Bearbeiten | Quelltext bearbeiten]

Listen werden als l<inhalt>e ausgegeben. Dabei ist <inhalt> die aneinandergereihten, bencodeten Elemente der Liste, in der Reihenfolge, in der sie vorkommen sollen. Eine Liste kann, eine Mischung unterschiedlicher Datentypen beinhalten (z. B. eine Mischung aus Zahlen und Zeichenketten). Eine leere Liste wird als le ausgegeben (also ohne Inhalt).

Inhalt Bencode
[] le
[595] li595ee
[Hallo] l5:Halloe
[-343, Hallo, 555, [], [5]] li-343e5:Halloi555eleli5eee

Dictionaries[Bearbeiten | Quelltext bearbeiten]

Assoziative Listen, auf Englisch (und in der Spezifikation) auch dictionaries genannt, werden, ähnlich wie normale Listen, in der Form d<inhalt>e ausgegeben. Dabei besteht der Inhalt aus aneinandergektetteten Paaren von zwei Elementen, einem Schlüssel und einem Wert. Die Reihenfolge der Paare muss in lexikographischer Ordnung erfolgen. Ein leeres Dictionary wird als de ausgegeben.

Inhalt Bencode
{} de
{Name => Thomas, Alter => 34} d5:Alteri34e4:Name6:Thomase

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. The BitTorrent Protocol Specification. BitTorrent.org. Abgerufen am 8. Oktober 2018.
  2. The BitTorrent Specification v1.0: Bencoding. Theory.org. Abgerufen am 9. Oktober 2018.