Данные нестандартного типа в union ?
- Войдите на сайт для отправки комментариев
Пт, 12/05/2017 - 22:21
Возможно ли компактно упаковать массив 11-битных данных при помощи структуры union, чтобы не тратить на каждый элемент массива 16 бит и не мудрить с расчетом сдвига битов, которые могут в некоторых случаях распределяться на 3 соседних байта ?
union buff { byte buff_a[SIZE_A]; uint11_type buff_b []; };
PS: тип "uint11_type" мое желание, но пока реального способа не нашел
Еще думал сделать массив по типу сдвигового регистра, но наверное сдвигать весь массив очень медленно ... Если нельзя формализовать через union, подскажите пожалуйста оптимальный путь по скорости выполнения.
Видео:Полтора землекопа.https://www.youtube.com/watch?v=zr3YuhgpuYg
Думаю, qwone прав и с точки зрения как объема кода и данных, так и скорости выполнеия будет наилучшим решением работать с 12-битными данными (2 элемента данных в 3 байтах).
C битами ничего хорошего не получится, минимальный размер ячейки в 8 разрядном контроллере 8 бит и каждый бит упаковывается в байт:
С битами всё получится, если делать, как сказано в #2, а не как в #3 :)
Как конкретно делать ?
но сдвигать биты для работы с ними всё равно придётся