String和byte []问题java

时间:2012-05-14 09:22:48

标签: java string stringbuilder

我正在使用getbytes()和String构造函数将String转换为byte [],然后再将byte []转换为String,

String message = "Hello World";
byte[] message1 = message.getbytes();

使用PipedInput / OutputStream我将其发送到另一个线程,其中,

byte[] getit = new byte[1000];
pipedinputstream.read(getit);
print(new String(getit));

打印1000的最后打印结果...我想要实际的字符串长度。我怎么能这样做?

4 个答案:

答案 0 :(得分:1)

读取String时,需要获取读取的字节数,并给出String的长度:

byte[] getit = new byte[1000];
int readed = pipedinputstream.read(getit);
print(new String(getit, 0, readed));

请注意,如果您的String超过1000个字节,它将被截断。

答案 1 :(得分:1)

您忽略了读取的字节数。请按以下步骤操作:

  byte[] getit = new byte[1000]; 
  int bytesRead = pipedinputstream.read(getit); 
  print(new String(getit, 0, bytesRead).length()); 

答案 2 :(得分:0)

public String getText (byte[] arr)
{
StringBuilder sb = new StringBuilder (arr.length);

for (byte b: arr)
    if (b != 32)
        sb.append ((char) b);

return sb.toString ();
}

不太干净,但应该工作。

答案 3 :(得分:-1)

  

我将String转换为byte [],然后再将byte []转换为String

为什么呢?往返保证不起作用。 String不是二进制数据的容器。不要这样做。停止将头撞在墙上:一段时间后疼痛就会停止。