解析bencoded数据时出问题?

时间:2011-07-22 02:25:09

标签: java parsing encoding arraylist

我有一些带有公告网址列表的torrent文件,f.e。这是它的一部分:

announce-listll68:http://iptorrents.com:2790/b6d18a815ab4421a86de672d6833369d/announceel67:http://iptorrents.me:2710/b6d18a815ab4421a86de672d6833369d/announceel67:http://iptorrents.ru:6969/b6d18a815ab4421a86de672d6833369d/announceee

所以这里有一个带有键«announce-list»的数组,其中包含三个元素(bencoded data,http://en.wikipedia.org/wiki/Bencode)。 所以我使用Aeltis的BDecoder.java类来解码它。在解析时,我得到了Map的下一个值:

{created by=[B@141d683, announce=[B@16a55fa, encoding=[B@32c41a, announce-list=[[[B@e89b94], [[B@13e205f], [[B@1bf73fa]], comment=[B@5740bb, creation date=1310060702, info={pieces=[B@5ac072, name=[B@109a4c, length=34209795, piece length=65536, private=1}}

所以宣布列表中有一些哈希值。那么如何将其转换为普通字符串(例如«http://iptorrents.com:2790/b6d18a815ab4421a86de672d6833369d/announce»)?或者它是BDecoder.java中的一些算法问题?

这是解码数据的上层类方法:http://pastebin.com/HimqF0ye

1 个答案:

答案 0 :(得分:1)

在您的案例中返回的对象是通用Map,没有定义类型。所以我想当你尝试打印这些值时,只打印地址。尝试将Map的值转换为String,这应该可以解决问题。

致以最诚挚的问候,

巴普蒂斯特