不带 'ln' 的字符串的 System.out.print。

4

我有一个字节数组,它看起来像这样:

[0, 0, 0, 0, 0, 0, 0, 0, 122, 98, 117, 54, 46, 0, 0, 115, 122, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 121, 116, 117, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 107, 111, 98, 105, 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, 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, 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, 122, 42, 109, 111, 119, 40, 0, 0, 0, 0, 0, 0, 107, 111, 98, 0, 0, 0, 0, 0, 98, 111, 40]

我想将它打印成字符串,所以我写了以下代码:

System.out.println(new String(byteArray));

但是没有输出。接下来,我尝试了以下代码:

for (byte b : byteArray) {
    System.out.print((char) b);
}

但是再次运行没有输出。但当我尝试以下代码时:

for (byte b : byteArray) {
    System.out.println((char) b);
}

我能看到这些值。
我的问题是,为什么我不能创建一个字符串或者第一次从byteArray打印值失败了?

2
不,对我来说一切都很顺利... - MadProgrammer
1
好的,它们在我的电脑上都给出了相同的结果.. 唯一的区别是 ln 给了我很多行.. - Yohanes Khosiawan 许先汉
3
你是否在任何地方调用了 System.setOut() 方法? - jdphenix
1
添加 System.out.flush() 有帮助吗? - OhleC
4个回答

0

试试这个。

byte[] bytes = new byte[]{0, 0, 0, 0, 0, 0, 0, 0, 122, 98, 117, 54, 46, 0, 0, 115, 122, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 121, 116, 117, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 107, 111, 98, 105, 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, 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, 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, 122, 42, 109, 111, 119, 40, 0, 0, 0, 0, 0, 0, 107, 111, 98, 0, 0, 0, 0, 0, 98, 111, 40};
System.out.println(new String(bytes));

0

你的字节数组大多数是不可打印字符,混杂着一些随机字母。但你所需要的只有:

String myString = new String(byteArray);

这将为您提供一个有效的字符串。

尝试以下代码,也许它会更好地说明您遇到的问题:

for (char c : new String(byteArray).toCharArray()) {
    System.out.printf("Character: %s Hex: %02x \n", c, (int) c);
}

我想将我的字节数组转换为字符。但是在使用你建议的方法后,什么也没有显示出来。 - Rop
在你的澄清后编辑了我的回答,希望这样对你有所帮助。 - James Kidd

0

0

试一下这个

System.out.println(Arrays.toString(byteArray));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接