我使用以下代码提取歌曲的元数据,以及如何将字节数组(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);
答案 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);