![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| v2v |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 8 Всего: 56 |
Создаю масив байт, из него создаю строку :
но проблема в том что вывод строки даёт что то вроде :
хоть длинна и правильная (384 символа). Как мне вывести правильную строку, и затем эту строку преобразовать назал в масив байт?? Это сообщение отредактировал(а) v2v - 2.10.2007, 08:49 |
||||
|
|||||
| AlexeyVorotnikov |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 10 Всего: 18 |
Ты уверен, что выводишь именно строку? Код в студию! -------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
| v2v |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 8 Всего: 56 |
немного не правильно написал : вывожу не строку , а масив байт...
причём это всё дело проходит через сокет, ну вообще вот код:
|
||||
|
|||||
| AlexeyVorotnikov |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 10 Всего: 18 |
А как это ты пишешь в сокет через println и читаешь через readLine?
-------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 8 Всего: 56 |
А что не правильно?
Читает BufferedReader наследник java.io.Reader , а Пишет PrintWriter - наследник java.io.Writer . Нет, тут всё работает(покрайнемере при передач целых строк). Я вот щас с проблемой столкнулся при переконвертации между масивом байт и строкой ((. Это сообщение отредактировал(а) v2v - 2.10.2007, 10:27 |
|||
|
||||
| AlexeyVorotnikov |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 10 Всего: 18 |
Ошибка, кажется, в другом месте...
При попытке сконвертировать массив байтов в строку при помощи метода toString (а именно он вызывается в случае System.out.println(res)), на выходе получиться именно что-то вроде "[B@d0af9b". Добавлено через 1 минуту и 4 секунды Вообще говоря, ипользовать Wirter и Reader для передачи массива байтов неправильно. Они предназначены для работы с символьными строками. -------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 8 Всего: 56 |
вообще то конвертация должна бы происходить тут byte[] res=sk.getBytes();
но res.length() < 384 (384 было на входе). собственно говоря, я и не передаю масивы байт, я работаю с символьными данными... ошибки где то при перекодировывании. |
|||
|
||||
| Shaggie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: 4 Всего: 72 |
Для работы с байтами используй java.io.ByteArrayInputStream и java.io.ByteArrayOutputStream
|
|||
|
||||
| AlexeyVorotnikov |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 10 Всего: 18 |
Вот в этой строчке:
что выводится? Добавлено через 1 минуту и 53 секунды И попробуй после
поставить
Что получится? Это сообщение отредактировал(а) AlexeyVorotnikov - 2.10.2007, 11:22 -------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
||||||
|
|||||||
| _Michael |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 23.6.2007 Где: з полонини Репутация: 2 Всего: 6 |
Конечно что так! Вот из строки получить массив байт:
наоборот, из массива байт строку:
и все, больше ничего не надо. Это сообщение отредактировал(а) _Michael - 2.10.2007, 22:13 -------------------- ...не убивайся ни о чем - все временно, хоть ночь темна но светлым днем беременна... Саади |
||||
|
|||||
| _Michael |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 23.6.2007 Где: з полонини Репутация: 2 Всего: 6 |
конечно что неверно!!! тоесть наверно не совсем то что ожыдалось ты здесь в метод println() передаеш твой массив байт, но в консоль ведь строка печатается. поетому если в качестве параметра в println() а точнее в print() передавать какой то другой тип данных то вызывается метод toString() на том обьекте который ты передаеш. который и возвращает строку которая будет печататься в консоли. НО, для массива байт етот метод не переопределен, поетому по умолчанию вызывается метод Object'a, который работает следующим образом:
вот ты и имееш строку вида [B@d0af9b где [B означает что ето массив байт а d0af9b шестнадцатеричное представление хеш-кода. Это сообщение отредактировал(а) _Michael - 2.10.2007, 22:16 -------------------- ...не убивайся ни о чем - все временно, хоть ночь темна но светлым днем беременна... Саади |
||||
|
|||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 8 Всего: 56 |
_Michael, спасибо за разьяснения.
Решёл всё по другому. Проблему я изначально правильно опеределил, но как то не обратил внимания. Дело в том что я генерирую "случайный" набор из 384 байт и понятное дело там могут быть байт 0 , так при переконвертации в строку этот строка обрубается по этому байту и дальше не записывается... вот почему у меня на выходе длинна строки всегда меньше нужной была. всем спасибо за обсуждение. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |