核心Java如何将20字节的数组转换为字符串



我得到20字节的输入。使用的字符集是UTF-8

当我将其转换为字符串时,我看到00000000000000000000000000000000

这是正确的。

但当我把它转换成字符串时,我得到一个空值。我怀疑字符集有问题,但即使尝试了不同的字符集,我也无法返回值"0"。

public String convertFromBytes(byte[] input) {
    System.out.println("BYTES ARE =="+ Hex.encodeHexString(input));
    System.out.println("VALUE IS "+ new String(input, this.charset));
    return new String(input, this.charset);
}

我试着换了charSet,但没能解决,任何我可能遗漏的线索。

US-ASCII
ISO-8859-1
UTF-8UTF-16BEUTF-16LEUTF-16

我还没有测试过代码

A我知道,你试图将{0x00, 0x00, 0x00...}转换为"000...",但一无所获。由于作为字符的'0'的值不是0,而是(ASCII)48,因此不会打印任何内容。转储十六进制值和将十六进制数组解释为带编码的字符串是有区别的。

尝试使用{48, 48, 48...},字符串将为"000000..",但十六进制写线将生成"48484848..."或类似的内容。

PS:'0'的代码是基数为10的48

编辑:您的字符串似乎不是空的,只是包含不可打印的字符。

最新更新