如何最好地将byte []数组转换为字符串缓冲区

时间:2011-04-28 18:28:15

标签: java

我需要将一些byte []数组变量转换为字符串缓冲区。

有这种转换的方法吗?

谢谢

谢谢大家的回复......但是我没有说清楚...... 我正在使用一些byte []数组预定义为类声明下的公共静态“ 对于我的java程序。这些“领域”在过程的“生命”中被重用。 当程序发出状态消息时,(写入文件)我已经定义了一个字符串缓冲区 (mesg_data)用于格式化状态消息。 所以当程序执行时 我试过msg2 = String(byte_array2) 我收到编译器错误: 找不到标志 symbol:方法String(byte []) 位置:类APPC_LU62.java.LU62XnsCvr          convrsID = String(conversation_ID);

示例:

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

所以我不能使用字符串变量的“动态”定义,因为使用了相同的变量 在多次出现。

我希望自己清楚明白 非常感谢

盖伊

5 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:5)

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

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

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

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

答案 2 :(得分:3)

您可以直接将其转为String

byte[] bytearray
....
String mystring = new String(bytearray)

然后转换为StringBuffer

StringBuffer buffer = new StringBuffer(mystring)

答案 3 :(得分:1)

您可以使用

str = new String(bytes)

通过以上代码执行的操作是使用默认平台字符编码创建java String(即UTF-16)。

如果字节数组是从以平台默认字符编码编码的字符串创建的,那么这将很有效。

如果不是,则需要将正确的字符编码(Charset)指定为

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

答案 4 :(得分:0)

完全取决于字符编码,但你想要:

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

这适用于US-ASCII值。

有关其他有效的字符编码(例如,UTF-8),请参阅Charset