Bencode(發音為Bee-Encode)是BitTorrent用在傳輸資料結構的編碼方式。這種編碼方式支援四種資料型態:
Bencode最常被用在.torrent檔中,檔案裡的元數據都是被Bencode编码过的字典表。这种编码方法也被Tracker返回响应时使用。
虽然比用纯二进制编码效率低,但Bencode结构简单而且不受字节存储顺序影响(所有数字以十进制编码),这对于跨平台性非常重要。并且,Bencode具有较好的灵活性,即使存在故障的字典键,只要将其忽略并更换新的就能兼容补充。
Bencode使用ASCII字符进行编码。
i42e
”,数字“0”编码为“i0e
”,“-42”编码为“i-42e
”。(长度):(内容)
编码,长度的值和数字编码方法一样,只是不允许负数;内容就是字符串的内容,如字符串“spam”就会编码为“4:spam
”,本规则不能处理ASCII以外的字符串,为了解决这个问题,一些BitTorrent程序会以非标准的方式将ASCII以外的字符以UTF-8编码转化后再编码。l4:spami42ee
”,注意分隔符要对应配对。d3:bar4:spam3:fooi42ee
”。对于线性表和字典的取值范围并没有限制,它们通常会包含其他元素,这样就允许对很复杂的数据结构进行编码。