如何将bytearray转换为String

时间:2011-04-04 10:02:57

标签: blackberry blackberry-simulator blackberry-eclipse-plugin

我使用以下代码提取歌曲的元数据,以及如何将字节数组(buf)转换为字符串?请帮助我,提前致谢。

String mint = httpConnection.getHeaderField("icy-metaint");
int b = 0;
int count =0;    
while(count++ < length){
b = inputStream.read();         
}            
int metalength = ((int)b)*16;
if(metalength <= 0)
    return;
byte buf[] = new byte[metalength];
inputStream.read(buf,0,buf.length);

3 个答案:

答案 0 :(得分:3)

1)。从流中读取字节:

// use net.rim.device.api.io.IOUtilities
byte[] data = IOUtilities.streamToBytes(inputStream);

2)。从字节创建一个字符串:

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

这意味着您知道在从服务器发送之前编码的文本数据的编码。在上面的示例中,编码是UTF-8。 BlackBerry支持以下字符编码:

* "ISO-8859-1"
* "UTF-8"
* "UTF-16BE"
* "US-ASCII" 

默认编码为“ISO-8859-1”。因此,当您使用String(byte[] data)构造函数时,它与String(byte[] data, "ISO-8859-1")相同。

如果您不知道服务器使用的是什么编码,那么我建议您先尝试使用UTF-8,因为到目前为止,它几乎已成为服务器的默认编码。另请注意,服务器可以通过http标头发送编码,因此您可以从响应中提取它。但是我看到很多服务器将“UTF-8”放入标题,而实际上使用ISO-8859-1甚至ASCII进行数据编码。

答案 1 :(得分:2)

String有一个构造函数,它接受一个可用于此的字节数组。 参见例如http://java.sun.com/javame/reference/apis/jsr139/java/lang/String.html

答案 2 :(得分:1)

正如@Heiko所提到的,你可以使用构造函数直接创建字符串。这也适用于黑莓java:

byte[] array = {1,2,3,4,5}; 
String str = new String(array);