2011-04-28 2 views
5

У меня есть количество байтовых [] переменных массива, которые мне нужно преобразовать в строковые буферы.Как лучше всего преобразовать массив byte [] в строковый буфер

есть способ конвертации этого типа?

Благодаря

Спасибо всем за responses..However я не сделал себе ясно .... Я использую несколько байт [] массивы заранее определены как открытые статические «под» класса объявление для моей программы java. эти «поля» повторно используются во время «жизни» процесса. Поскольку программа выдает сообщения о статусе (записывается в файл), я определил строковый буфер (mesg_data), который использовался для форматирования сообщения о состоянии. Так как программа выполняет я попытался msg2 = String (byte_array2) Я получаю ошибку компиляции: не может найти символ символ: метод String (байт []) местоположение: класс APPC_LU62.java.LU62XnsCvr convrsID = String (convers_ID);

пример:

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

Так что я не могу использовать «динамический» определить строковой переменной, так как та же переменная используется в нескольких появлений.

Я надеюсь, что я ясно Спасибо очень много

Guy

+0

вам нужно строковое представление байт? или каждый байт представляет символ? – Dave

+0

Так много дублирующих ответов ... –

ответ

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

Почему это было приостановлено? Из-за отсутствия кодировки символов? – helpermethod

+2

Да, вы должны указать кодировку символов. Если вы хотите, чтобы один байт отображался на один символ, используйте кодировку «US-ASCII». Если вы не укажете кодировку, вы можете получить разные результаты в разных средах. В любом случае, уточнение «US-ASCII» дает понять. – AgilePro

3

Вы можете превратить его в String непосредственно

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

, а затем преобразовать в StringBuffer

StringBuffer buffer = new StringBuffer(mystring) 
5

Существует конструкция тор, что массив байтов и кодирование:

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

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

Для того, чтобы перевести байты в символы, которые необходимо указать кодировку: схемы, посредством которого последовательности (как правило, длиной 1,2 или 3) 0-255 значений (т.е. : последовательность байтов) сопоставляются с символами. UTF-8, вероятно, лучший вариант по умолчанию.

0

Это полностью зависит от кодировки символов, но вы хотите:

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

Эта работа для значений US-ASCII.

См Charset для других кодировок в силе символов (например, UTF-8)

1

Вы можете использовать

str = new String(bytes) 

По thewhat код выше делает это для создания Java String (то есть UTF-16) с кодировкой символов платформы по умолчанию.

Если массив байтов был создан из строки, закодированной в кодировке символов по умолчанию платформы, это будет работать хорошо.

Если вам не нужно указать правильную кодировку (Charset), как

String str = new String (byte [] bytes, Charset charset) 
Смежные вопросы