Russian Qt Forum
Ноябрь 23, 2024, 04:29
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
С/C++
>
Байто-битовые сношения
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Байто-битовые сношения (Прочитано 3777 раз)
CuteBunny
Гость
Байто-битовые сношения
«
:
Февраль 03, 2015, 16:58 »
Привет, Всем!
Можно ли упаковать от 2 до n байтов в один байт, а потом их извлечь из этого байта?
Цель: снизить избыточность данных при передаче, к примеру - у меня идет последовательность байтов, в которых максимум два или три бита используются, мы их "запаковываем" в один байт и передаем другой стороне, которая из этого байта восстанавливает последовательность.
Записан
ammaximus
Гость
Re: Байто-битовые сношения
«
Ответ #1 :
Февраль 03, 2015, 17:12 »
Ну, если известно что значимые биты всегда в начале байта, то можно упаковать n байт в один, где n= ceil (8 div макс кол-во значимых байт).
Не знаю, где это может пригодится, если в канале большая нагрузка лучше заняться оптимизацией протоколов обмена, как я в соседней теме.
Записан
Bepec
Гость
Re: Байто-битовые сношения
«
Ответ #2 :
Февраль 03, 2015, 17:23 »
Упаковать и восстановить можно, но необходима будет дополнительная информация о неиспользуемых битах.
Вот тут уже вопрос, не будет ли это избыточно.
PS Восстановление данных возможно лишь при наличии дополнительный информации, сложность которой будет превосходить один байт.
Записан
CuteBunny
Гость
Re: Байто-битовые сношения
«
Ответ #3 :
Февраль 03, 2015, 17:29 »
Ок, попробуем: допустим 2 байта на входе, в первом 2 бита используются,
в другом 3, максимальное кол-во битов 3, считаем n = ceil(8/3) => n = 2, хорошо, а дальше как паковать в байт, чтоб потом можно было извлечь и восстановить?
В принципе цель не стоит в оптимизации передачи данных по сети, цель избежать избыточности данных. Хотя, если такой вариант в принципе "не стоит выделки", тогда ладно, забили.
Записан
CuteBunny
Гость
Re: Байто-битовые сношения
«
Ответ #4 :
Февраль 03, 2015, 17:31 »
Цитата: Bepec от Февраль 03, 2015, 17:23
Упаковать и восстановить можно, но необходима будет дополнительная информация о неиспользуемых битах.
Вот тут уже вопрос, не будет ли это избыточно.
PS Восстановление данных возможно лишь при наличии дополнительный информации, сложность которой будет превосходить один байт.
Короче не стоит оно того?
Записан
ammaximus
Гость
Re: Байто-битовые сношения
«
Ответ #5 :
Февраль 03, 2015, 17:58 »
1. Не должно быть ранней оптимизации
2. Не должно быть оптимизации того, что и так работает
Это еще от макконела помню)
В сети уже давно не принято биты считать, я думал речь про последовательный порт. Более того, можно добиться куда лучшей оптимизации манипулируя протоколами.
Цитировать
а дальше как паковать в байт
Ну так тут довольно просто, делим байт пополам - левая половина первый байт правая второй. Но как и сказал Верес, придется при изменении n каждый раз посылать служебное сообщение с предупреждением.
В оптимизации часто бывает, что кажется улучшаешь, на самом деле сделал хуже. Для этого нужно собирать статистику, проводить испытания. Это отдельная работа, она часто оказывается сложнее, чем основная.
Записан
CuteBunny
Гость
Re: Байто-битовые сношения
«
Ответ #6 :
Февраль 03, 2015, 18:15 »
Цитата: ammaximus от Февраль 03, 2015, 17:58
1. Не должно быть ранней оптимизации
2. Не должно быть оптимизации того, что и так работает
Это еще от макконела помню)
В сети уже давно не принято биты считать, я думал речь про последовательный порт. Более того, можно добиться куда лучшей оптимизации манипулируя протоколами.
Цитировать
а дальше как паковать в байт
Ну так тут довольно просто, делим байт пополам - левая половина первый байт правая второй. Но как и сказал Верес, придется при изменении n каждый раз посылать служебное сообщение с предупреждением.
В оптимизации часто бывает, что кажется улучшаешь, на самом деле сделал хуже. Для этого нужно собирать статистику, проводить испытания. Это отдельная работа, она часто оказывается сложнее, чем основная.
Ок, спасибо.
Записан
Bepec
Гость
Re: Байто-битовые сношения
«
Ответ #7 :
Февраль 03, 2015, 18:22 »
На данный момент проблемы с пропускным каналом в сети присутствуют только у специализированных устройств, поток информации от которых больше пропускной способности сети.
Ну и если проще выразиться - на каждый "сэкономленный" байт вам придётся слать сервисное сообщение из 2 байт. И так далее и тому подобное.
Задача что вы предложили чрезвычайно сложна - самый известный её "шуточный" вариант - восстановление фильма из md5 .
PS Не стоит экономить байты. Нужно экономить мегабайты
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...