Вид вывода, который вы видите из вашего байтового массива ([B@405217f8
), также является выходным для массива байтов с нулевой длиной (например, new byte[0]
). Похоже, что эта строка является ссылкой на массив, а не описанием содержимого массива, как мы могли бы ожидать из метода toString()
регулярной коллекции.
Как и в случае с другими респондентами, я хотел бы указать вам к конструкторам String
, которые принимают параметр byte[]
для построения строки из содержимого массива байтов. Вы должны иметь возможность читать необработанные байты из InputStream
сокета, если вы хотите получить байты из TCP-соединения.
Если вы уже прочитали эти байты как String
(используя InputStreamReader
), тогда строка может быть преобразована в байты с помощью функции getBytes()
. Обязательно передайте желаемый набор символов как для конструктора String, так и для функций getBytes()
, и это будет работать, только если данные байта могут быть преобразованы в символы с помощью InputStreamReader
.
Если вы хотите иметь дело с необработанными байтами, вы действительно должны избегать использования этого слоя чтения потока.