fbpx
维基百科

Bencode

Bencode(發音為Bee-Encode)是BitTorrent用在傳輸資料結構的編碼方式。這種編碼方式支援四種資料型態:

Bencode最常被用在.torrent檔中,檔案裡的元數據都是被Bencode编码过的字典表。这种编码方法也被Tracker返回响应时使用。

虽然比用纯二进制编码效率低,但Bencode结构简单而且不受字节存储顺序影响(所有数字以十进制编码),这对于跨平台性非常重要。并且,Bencode具有较好的灵活性,即使存在故障的字典键,只要将其忽略并更换新的就能兼容补充。

编码方法 编辑

Bencode使用ASCII字符进行编码。

  • 一个整型数会以十进制数编码并括在i和e之间,不允许前导零(但0依然为整数0),负数如十进制表示一样使用前导负号,不允许负零。如整型数“42”编码为“i42e”,数字“0”编码为“i0e”,“-42”编码为“i-42e”。
  • 一个以字节为单位表示的字符串(字符串的字为一个字节,不一定是一个字符)会以(长度):(内容)编码,长度的值和数字编码方法一样,只是不允许负数;内容就是字符串的内容,如字符串“spam”就会编码为“4:spam”,本规则不能处理ASCII以外的字符串,为了解决这个问题,一些BitTorrent程序会以非标准的方式将ASCII以外的字符以UTF-8编码转化后再编码。
  • 线性表会以l和e括住来编码,其中的内容为Bencode四种编码格式所组成的编码字串,如包含和字符串“spam”数字“42”的线性表会被编码为“l4:spami42ee”,注意分隔符要对应配对。
  • 字典表会以d和e括住来编码,字典元素的键和值必须紧跟在一起,而且所有键为字符串类型并按字典顺序排好。如键为“bar”值为字串“spam”和鍵为“foo”值为整數“42”的字典表会被编码为“d3:bar4:spam3:fooi42ee”。

对于线性表和字典的取值范围并没有限制,它们通常会包含其他元素,这样就允许对很复杂的数据结构进行编码。

外部連結 编辑

  • Another BitTorrent protocol specification(页面存档备份,存于互联网档案馆
  • File_Bittorrent2(页面存档备份,存于互联网档案馆) - Another PHP Bencode/decode implementation
  • The original BitTorrent implementation in Python as standalone package(页面存档备份,存于互联网档案馆
  • bencode-tools(页面存档备份,存于互联网档案馆) - a C library for manipulating bencoded data and a XML schema like validator for bencode messages in Python

bencode, 發音為bee, encode, 是bittorrent用在傳輸資料結構的編碼方式, 這種編碼方式支援四種資料型態, 字符串, 整數, 串列, 字典表最常被用在, torrent檔中, 檔案裡的元數據都是被编码过的字典表, 这种编码方法也被tracker返回响应时使用, 虽然比用纯二进制编码效率低, 但结构简单而且不受字节存储顺序影响, 所有数字以十进制编码, 这对于跨平台性非常重要, 并且, 具有较好的灵活性, 即使存在故障的字典键, 只要将其忽略并更换新的就能兼容补充, 编码方法, 编辑使用as. Bencode 發音為Bee Encode 是BitTorrent用在傳輸資料結構的編碼方式 這種編碼方式支援四種資料型態 字符串 整數 串列 字典表Bencode最常被用在 torrent檔中 檔案裡的元數據都是被Bencode编码过的字典表 这种编码方法也被Tracker返回响应时使用 虽然比用纯二进制编码效率低 但Bencode结构简单而且不受字节存储顺序影响 所有数字以十进制编码 这对于跨平台性非常重要 并且 Bencode具有较好的灵活性 即使存在故障的字典键 只要将其忽略并更换新的就能兼容补充 编码方法 编辑Bencode使用ASCII字符进行编码 一个整型数会以十进制数编码并括在i和e之间 不允许前导零 但0依然为整数0 负数如十进制表示一样使用前导负号 不允许负零 如整型数 42 编码为 i42e 数字 0 编码为 i0e 42 编码为 i 42e 一个以字节为单位表示的字符串 字符串的字为一个字节 不一定是一个字符 会以 长度 内容 编码 长度的值和数字编码方法一样 只是不允许负数 内容就是字符串的内容 如字符串 spam 就会编码为 4 spam 本规则不能处理ASCII以外的字符串 为了解决这个问题 一些BitTorrent程序会以非标准的方式将ASCII以外的字符以UTF 8编码转化后再编码 线性表会以l和e括住来编码 其中的内容为Bencode四种编码格式所组成的编码字串 如包含和字符串 spam 数字 42 的线性表会被编码为 l4 spami42ee 注意分隔符要对应配对 字典表会以d和e括住来编码 字典元素的键和值必须紧跟在一起 而且所有键为字符串类型并按字典顺序排好 如键为 bar 值为字串 spam 和鍵为 foo 值为整數 42 的字典表会被编码为 d3 bar4 spam3 fooi42ee 对于线性表和字典的取值范围并没有限制 它们通常会包含其他元素 这样就允许对很复杂的数据结构进行编码 外部連結 编辑Another BitTorrent protocol specification 页面存档备份 存于互联网档案馆 File Bittorrent2 页面存档备份 存于互联网档案馆 Another PHP Bencode decode implementation The original BitTorrent implementation in Python as standalone package 页面存档备份 存于互联网档案馆 BEncode Editor bencode tools 页面存档备份 存于互联网档案馆 a C library for manipulating bencoded data and a XML schema like validator for bencode messages in Python Bencode parsing in Java Bencode parsing in C 取自 https zh wikipedia org w index php title Bencode amp oldid 80018355, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。