如何最佳地将byte[]数组转换为string缓冲区

5

我有许多byte[]数组变量,我需要将它们转换为字符串缓冲区。

是否有一种方法可以进行此类转换?

谢谢。

感谢您所有人的回复...但是我没有表达清楚... 我在我的java程序的类声明下方预定义了一些byte[]数组作为公共静态“字段”。 这些“字段”在进程的“生命周期”中被重复使用。 随着程序发出状态消息(写入文件),我定义了一个字符串缓冲区 (mesg_data)用于格式化状态消息。 因此,当程序执行时, 我尝试 msg2 = String(byte_array2) 我得到一个编译器错误: 无法找到符号 符号:方法String(byte []) 位置:class APPC_LU62.java.LU62XnsCvr convrsID = String(conversation_ID);

例如:

public class LU62XnsCvr extends Object
           .
           .
static String convrsID ; 
static byte[] conversation_ID = new byte[8] ;

因为同一个变量在多个地方使用,所以我无法使用字符串变量的“动态”定义。

希望我表达清楚了。非常感谢。

Guy


你需要字节字符串表示吗?还是每个字节代表一个字符? - Dave
5个回答

6
String s = new String(myByteArray, "UTF-8");
StringBuilder sb = new StringBuilder(s);

1
为什么被踩了?是因为缺少字符编码吗? - helpermethod
2
是的,你应该指定字符编码。如果你想让一个字节映射到一个字符,那么使用“US-ASCII”编码。如果你不指定编码,可能会在不同的环境中得到不同的结果。无论如何,指定“US-ASCII”可以使其更加清晰明了。 - AgilePro

5

有一个构造函数,它接受一个字节数组和编码:

 byte[] bytes = new byte[200];
 //...

 String s = new String(bytes, "UTF-8");

为了将字节转换为字符,您需要指定编码:即将0-255值(即字节序列)的序列(通常长度为1、2或3)映射到字符的方案。UTF-8 可能是默认情况下最好的选择。

3
你可以直接将它转换为一个字符串。
byte[] bytearray
....
String mystring = new String(bytearray)

然后将其转换为StringBuffer

StringBuffer buffer = new StringBuffer(mystring)

1

您可以使用

str = new String(bytes)

以上代码的作用是创建一个Java字符串(即UTF-16),该字符串使用默认平台字符编码。

如果字节数组是从以平台默认字符编码编码的字符串创建的,则此方法将有效。

否则,您需要指定正确的字符编码(Charset):

String str = new String (byte [] bytes, Charset charset)

0

这完全取决于字符编码,但您需要:

String value = new String(bytes, "US-ASCII");

这对于US-ASCII值有效。

请参见Charset以获取其他有效的字符编码(例如,UTF-8)


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