1

我正在使用getbytes()and String 构造函数将 String 转换为 byte[],然后再将 byte[] 转换为 Java 中的 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

4 回答 4

1

您忽略了读取的字节数。如下所示:

  byte[] getit = new byte[1000]; 
  int bytesRead = pipedinputstream.read(getit); 
  print(new String(getit, 0, bytesRead).length()); 
于 2012-05-14T09:29:19.383 回答
1

读取字符串时,您需要获取读取的字节数,并将长度指定给您的字符串:

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

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

于 2012-05-14T09:25:18.297 回答
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 ();
}

不是很干净,但应该可以。

于 2012-05-14T09:30:32.827 回答
-1

我正在将字符串转换为 byte[],然后再将 byte[] 转换为 String

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

于 2012-05-14T09:54:04.760 回答