我对bencoding有点困惑。
根据规范我编码字符串时我需要使用以下格式:
长度:字符串
字符串垃圾邮件变为 4:垃圾邮件
我的问题: 4 是bencoded字符串的数量的数量,还是utf-8字节的数量?
例如,如果我要对字符串gâteau
进行bencode应该指定哪个数字作为此字符串的长度?
我想我必须指定 7 ,最终形式应为 7:gâteau
这是因为符号â占用了2个字节,符合utf-8编码,并且该字符串中的所有其余符号根据utf-8编码占用了1个字节。
另外我听说不建议在BC String实例中存储bencoded数据。
换句话说,当我对数据块进行编码时,我应该将其存储为字节数组,并且不应将其转换为java String值以避免编码问题。
我的假设是否正确?
答案 0 :(得分:1)
According to the specification,bencoded string是一个字节序列,你必须为这个序列指定字节数量作为其长度。
对于“gâteau”的情况,你应该指定 7 作为长度,因为字符â需要2个字节。