![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| JavaCraft |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 8.2.2007 Репутация: нет Всего: 1 |
Пусть имеется аллооцированный ByteBuffer BF;
и неаллоцированная ссылка ByteBuffer bf; Нужно подобно указателю C, сместиться на i-тую позицию и получить ссылку на ByteBuffer Чтото типа этого bf = *BF[100]; bf = BF+100; Задача такая. В BF хранится байтовый массив. Нужно встать на его конец и записать в него, начиная с конца, еще массив. Предполагается, что место под него уже имеется. Запись в массив BF по ссылке bf будет выполняться такой функцией: (SocketChannel)sc.read(bf); Как это сделать на Java? Где почитать? |
|||
|
||||
| jsa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 704 Регистрация: 19.1.2006 Где: Новосибирск Репутация: нет Всего: 20 |
-------------------- Все мы, на перине с песней, строим небо на земле © Ю. Шевчук |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| JavaCraft |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 8.2.2007 Репутация: нет Всего: 1 |
Я не вижу там примеров, как реализовать такую ссылку.
Как вернуть из буфера байтовый массив или поместить i-тый байт в массив, есть, но нужно не это. Важно, чтобы никаких новых байтовых массивов не создавалось, а ссылка указывала на Буфер у которого тот-же массив, только начиная с i-той позиции. Добавлено @ 13:19
Извиняюсь. Это наверное то что нужно. Я так понимаю slice() вернет ссылку на новый ByteBuffer у которого массив будет начинаться с указанной позиции в BF. И если мы запишем в bf то масив в BF также должен увеличиться? т.е. Функция BF.limit() вернет новую длину массива? Это действительно так? |
||||
|
|||||
| JavaCraft |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 8.2.2007 Репутация: нет Всего: 1 |
И еще вопрос по этой теме.
Как реаллоцировать буфер BF, с сохранением всех данных? Допустим, он аллоцирован на 1024, а в будущем потребовалось увеличить до 2000. BF = BF.allocate(2000); Правильно? или еще копировать придется? |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Это будет новый ByteBuffer со своими limit, position, capacity, но данные у него будут общие с исходным буфером. Конечно придется, сказано же
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]()
|
| Правила форума "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. |