我有以下字节数组private byte[] file = new byte[40]
。
它接受最多 20 个字符的字符串。如果它较短,则数组的其余部分用零填充:
[116, 111, 117, 99, 104, 50, 46, 116, 120, 116, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
此字节序列使用 Java 的套接字传输并转换回字符串以用作文件路径。
但是,在截断零并使用之后String filePath = new String(path);
,在字符串的后面会产生一个奇怪的字符:
Appending to this file.. touch2.txt╚
截断方法:
private byte[] trim(byte[] bytes){
int i = bytes.length - 1;
while (i >= 0 && bytes[i] == 0)
{
--i;
}
return Arrays.copyOf(bytes, i + 1);
}
我如何摆脱这个角色?奇怪的是打印原始字节数组和被截断的数组给出了相同的字符序列。
截断所有 0 字节后,序列末尾仍有字节3,很可能显示如下:╚。也许文本字节的结尾(即3)不应该出现在您的序列中,或者 truncate 方法也应该截断该字符。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句