BitTorrent协议规范之Bencode

Bencode(发音为 Bee-Encode)是 BitTorrent 用在传输数据结构的编码方式。这种编码方式支持四种数据:

  • 字符串 (Byte String)
  • 整数 (Int)
  • 线性表 (List)
  • 字典表 (Dictionary)

Bencode 最常被用在 .torrent 档中,档案里的元数据都是 Bencode 过的字典表。

Bencode其实非常简单,它就是定义了一套用字符串来表示这四种信息的规则。

 

  • 字符串 Byte String

      字符串用最常见的方法,即 字符串长度:字符串数据。但是这个字符串长度是用ASCII编码,而不是把四个字节表示的Int写正在这里,比如 "10:abcdefghij"表示字符串"abcdefghij"。涉及中文时,用UTF-8编码方式。

  • 整数 Int

      整数表示方法是,i  整数的ASCII编码 e  。这里用i表示起始标志,用e表示结束标志。可以表示负数,比如 "i-5e"就表示-5。其中“整数的ASCII编码”除了0外,其它的不能以0开始。比如"i07e"就非法,但是"i0e"就是可以的。

      表示的整数不要超过32 Bit。

  • 线性表 List

      线性表的表示方法是,l  (Bencode数据)* e  。值得注意的是,List中每一项是Bencode的数据,所以List是可以嵌套的。比如 "l3:abc4:abcdl3:def4:1234ee"表示的是一个List中有"abc","abcd"和List2,List2中有"def", "1234"。

  • 字典表 Dictionary

      字典表的表示方法是,d ((Bencode字符串key)(Bencode数据value))* e  。字典表中每一项的前面的key必须是Bencode字符串,后面的value则可以是Bencode的四种数据中任意一种。比如 "d3:abc4:abcd3:defl3:abc:4:abcdee"就表示字典中有两项,第一项key="abc", value="abcd",第二项的key="def",value则是一个List,List中有"abc", "abcd"。

 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值