所以我想将 DatagramPacket 的 getData() 函数返回的字节数组转换为字符串。我知道将整个字节数组转换为字符串的方法就是:
String str = new String(bytes);
但是,这会在末尾打印出空字符。所以如果字节数组是
[114, 101, 113, 117, 101, 115, 116, 0, 0, 0]
0 在控制台上打印出空框。所以我基本上只想打印出来:
[114, 101, 113, 117, 101, 115, 116]
所以我做了这个功能:
public void print(DatagramPacket d) {
byte[] data = d.getData();
for(int i=0; i< d.getLength(); i++) {
if(data[i] != 0)
System.out.println( data[i] );
}
}
但不幸的是,这是打印出实际的数字而不是字母。那么我如何将每个单独的字节转换为字符串并将其打印出来。或者,如果有另一种方法可以打印末尾不带空值的字节数组,那么也可以。
最佳答案
只需将每个非 0 的 int 转换为 char。您可以在打印中测试它:
System.out.println((char)data[i]);
关于Java字节到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20112935/