gpt4 book ai didi

java - [Java]编码: decoding string

转载 作者:行者123 更新时间:2023-12-01 15:10:08 24 4
gpt4 key购买 nike

我正在为我正在制作的 torrent 下载系统实现一个 Bencoding 系统。

对字符串进行编码非常简单,您可以获取一个字符串,例如“hello”,然后通过编写字符串长度+一个“:”字符,然后是字符串本身来对其进行编码。 Bencode 后的“hello”将是“5:hello”

目前我有这个代码。

public BencodeString(String string) {
this.string = string;
}

public static BencodeString parseBencodeString(String string) {
byte[] bytes = string.getBytes();
int position = 0;
int size = 0;
StringBuilder sb = new StringBuilder();
while (bytes[position] >= '0' && bytes[position] <= '9') {
sb.append((char) bytes[position]);
position++;
}
if (bytes[position] != ':')
return null;

size = Integer.parseInt(sb.toString());
System.out.println(size);
if (size <= 0)
return null;
return new BencodeString(string.substring(position + 1, size + position
+ 1));
}

它有效,但我感觉它可以做得更好。做这个的最好方式是什么?

注意:字符串可以是任意大小(因此字符串之前可以有多个数字)

已经解决了,谢谢大家的回复:)

最佳答案

Java 字符串表示 Unicode 字符序列。您不应该将它们用于编码/解码,因为这样您会遇到编码问题。

例如,字典键必须按其二进制表示形式排序,而不是按字符串排序。 Bencoded 数据没有固有的字符集,因为值可以包含原始二进制(例如哈希)或 utf-8 编码字符串(utf 对字节序列有效进行限制)。

您应该使用 ByteBuffers 或普通 byte[] 数组。

关于java - [Java]编码: decoding string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12443171/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com