我在玩bencoding,我希望将bencoded字符串保留为Java字符串,但是它们包含二进制数据,因此盲目地将它们转换为string会损坏数据。我试图实现的是有一个转换函数,它将ASCII字节保持为ASCII,并以可逆的方式对非ASCII字符进行编码。在
我发现了一些我试图用Python实现的示例,但是我对Python的了解还不够深入。This decoder做了我想做的事情:torrent的ASCII部分保留为ASCII,但是sha1散列被打印为“\xd8r\xe7”。虽然我对Python的知识非常有限,但他似乎对字符串没有做任何特殊的处理;这是由Python解释器处理的吗?我能用Java实现同样的功能吗?在
我玩过一些编码,比如Base64或using整数.toHexString,但最后我得到了无法读取的ASCII字符串。在
我还发现了一个scheme example,它可以打印除sha1哈希之外的所有内容。在
如果Wikipedia is accurate on Bencode,则格式似乎足够简单。直接解析字节数据:
将二进制字符串存储在仅当显式地将其转换为ASCII的类型中,如下面的
^{pr2}$toString
调用中:Bencoded字符串是字节字符串。您可以尝试用
String(byte[] bytes, Charset charset)
将字节字符串解码为Java中的unicode码位。使用某些编码(如ISO-8859-1)解码总是成功的,因为任何字节都直接映射到一个码位。对于许多这样的编码(包括ISO-8859-1),这个过程也是可逆的。在相关问题 更多 >
编程相关推荐