Как лучше всего преобразовать массив byte [] в строковый буфер

#java

#java

Вопрос:

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

существует ли метод для такого типа преобразования?

Спасибо

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

пример:

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

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

Надеюсь, я ясно выразился, большое спасибо

Парень

Комментарии:

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

Ответ №1:

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

Комментарии:

1. Почему это было отклонено? Из-за отсутствующей кодировки символов?

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

Ответ №2:

Существует конструктор, который преобразует массив байтов и кодировку:

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

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

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

Ответ №3:

Вы можете преобразовать его в String напрямую

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

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

 StringBuffer buffer = new StringBuffer(mystring)
  

Ответ №4:

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

 str = new String(bytes)
  

С помощью приведенного выше кода создается строка java (т.Е. UTF-16) с кодировкой символов платформы по умолчанию.

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

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

 String str = new String (byte [] bytes, Charset charset)
  

Ответ №5:

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

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

Это сработало бы для НАС-значения ASCII.

Другие допустимые кодировки символов (например, UTF-8) см. Charset