#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