Работа с битовыми полями.
- Войдите на сайт для отправки комментариев
Всем привет.
В памяти содержится массив некий массив данных. В нем хранятся значения абстрактного параметра от 0 до 15. Таким образом, в 1 байт можно смело засунуть 2 значения - первой в 4 старших бита, второе - в 4 младших. Тут вопросов нет.
Проблема в том, как их оттуда получить ? С побитовыми операциями знаком, но тут то нуобходимо использовать сразу 4 бита. Была смысль применить под это дело приблизительно такую структуру:
struct st { unsigned one: 4; unsigned two: 4; } data;
но что-то не соображу, как ее заполнить используя pgm_read_byte(***); ?
Что-то хожу вокруг да около и не могу придумать решения. Может и не нужны тут никакие поля ? Может можно как-то проще разбить байт на 2 части и получить оттуда обычные hex-значения обеих частей по отдельности ?
https://www.google.com/search?q=C%2B%2B+битовые+поля
Посмотри тут
Вот ведь удивительное дело, что процессору на ваши битовые поля начхать. У него есть система команд. И он так работает. Битовые поля это проблема языка Си и программиста как внятно объяснить компилятору и в конце концов процессору что делать. Если идти дальше то от программиста требуется внятно описать что и как надо делать.
пс https://msdn.microsoft.com/ru-ru/library/yszfawxh.aspx
но что-то не соображу, как ее заполнить используя pgm_read_byte(***); ?
А чего тут соображать? Если в pgm значения хранятся целыми байтами, то
data.one = pgm_read_byte(***);
data.two = pgm_read_byte(***);
Если они там как-то по-другому хранятся, так потрудитесь описать как, а то хрустальные шары Клапауций недавно запретил.
arduinec Ага, сам к этому же и пришел.
Всем спасибо за ответы.