Zum Inhalt springen

Bencode

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 9. Oktober 2018 um 00:34 Uhr durch Xfbs (Diskussion | Beiträge) (Ich habe mich grob an dem Artikel in der Englischen Wikipedia (https://en.wikipedia.org/wiki/Bencode) orientiert, aber ein wenig vereinfacht.). Sie kann sich erheblich von der aktuellen Version unterscheiden.
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Bencode ist ein Datenformat, welches von dem Filesharing-Protokoll BitTorrent verwendet wird, um Daten zu speichern und auszutauschen[1].

Das Format unterstützt vier Datentypen.

Bencode wird, unter anderem, in .torrent-Dateien verwendet. Der BitTorrent-Standard spezifiert dazu, dass diese Dateien, internet auch MetaInfo-Dateien genannt, bencodete Assoziative Listen seinen sollen.

Da es ein relative simpel gehaltener Algorithmus ist, kann Bencode sehr leich implementiert und geparst werden. Außerdem ist es immun gegen einige Probleme, die Binären Formaten oft betreffe. So ist zum Beispiel die Byte-Reihenfolge irrelevant.

Encoding

Bencode nutzt ASCII-Buchstaben als Separatoren.

Zahlen

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

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

Zeichenketten

Zeichenketten werdem 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
-234 0:
Hallo Welt 10:Hallo Welt

Listen

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

Assoziative Listen, auf Englisch (und in der Spezification) 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 lexokographischer Ordnung erfolgen. Ein leeres Dictionary wird als de ausgegeben.

Inhalt Bencode
{} le
{Name => Thomas, Alter => 34} d4:Name6:Thomas5:Alteri34ee

Siehe Auch

Einzelnachweise

  1. The BitTorrent Protocol Specification. BitTorrent.org. Abgerufen am 8 October 2018.