Java字节到字符串

所以我想将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] 

所以我做了这个function:

 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] ); } } 

但不幸的是,这是打印出实际数字而不是字母。 那么如何将每个字节转换为字符串并将其打印出来。 或者,如果有另一种方法来打印字节数组而不是最后的空值那么那也没关系。

只需将每个int(非0)转换为char。 你可以在你的印刷品中测试它:

 System.out.println((char)data[i]); 

如果你想将字节数组转换为String,那么你可以使用String(byte[] bytes)String(byte[] bytes, Charset charset)构造函数,

 byte[] b=new byte[10]; b[0]=100; b[1]=101; b[2]=102; b[3]=0; b[4]=0; String st=new String(b); System.out.println(st);//def 

但如果你想打印单个字符呢

 char[] c=st.toCharArray(); for(int i=0;i