Как я могу конвертировать bytearray в String - PullRequest
1 голос
/ 04 апреля 2011

Я извлекаю метаданные песни, используя следующий код, и как я могу преобразовать байтовый массив (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 ]

3 голосов
/ 04 апреля 2011

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 для кодирования данных.

2 голосов
/ 04 апреля 2011

String имеет конструктор, который принимает байтовый массив, который вы можете использовать для этого.См. Например http://java.sun.com/javame/reference/apis/jsr139/java/lang/String.html

1 голос
/ 04 апреля 2011

Как уже упоминалось @Heiko, вы можете создавать строки напрямую, используя конструктор. Это относится и к ежевике Java:

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