如何将字节数组转换为字符串
我使用以下代码提取歌曲的元数据,以及如何将字节数组(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);
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来进行数据编码。
String
具有接受一个字节数组,你可以使用这个构造。 参见例如http://java.sun.com/javame/reference/apis/jsr139/java/lang/String.html
作为@Heiko提到你可以直接使用构造函数创建字符串。这也适用于黑莓Java:
byte[] array = {1,2,3,4,5};
String str = new String(array);
我试过String s = new String(buf,“ISO-8859-1”);但是仍然只有一部分s是字符串格式 – Jisson 2011-04-04 11:03:03
仍然得到字符串,而不是humen可读形式 – Jisson 2011-04-04 10:51:26
您确定您试图转换为字符串的数据实际上是人类可读的数据吗? – 2011-04-04 13:10:20