Кодировать и декодировать логические значения в одно целое число?
Я пытаюсь записать состояние некоторых пинов с течением времени. Для экономии памяти я думаю закодировать состояния пинов в одно целое число, например:
Pin 1: TRUE
Pin 2: FALSE
Pin 3: FALSE
Pin 4: TRUE
Pin 1 = 1, Pin 2 = 2, Pin 3 = 4, Pin 4 = 8
1 + 0 + 0 + 8
Result: 9
Это довольно эффективно. Но как мне расшифровать состояния выводов из этого наилучшего варианта? Или вы порекомендуете лучший способ сделать это?
@Esshahn, 👍1
1 ответ
Лучший ответ:
▲ 0
Используйте оператор AND.
Например:
Состояние контакта 2 будет: (результат & 0x02) ? TRUE:FLASE
,
@dannyf
Смотрите также:
- Шестнадцатеричное/Байтовое реверсирование и преобразование
- LSB/MSB и shiftOut
- Использование массивов, двоичных данных и битового чтения
- Изменение одного бита в байтовом массиве
- передать последовательность бит с помощью Arduino Uno
- Arduino статус бита
- Как управлять выводом регистров сдвига по отдельности побитово
- Вывести 2 числа, хранящиеся в 24-битном формате, в десятичном формате.
Мне потребовалась минута (ну, скорее, пять ;) ), чтобы понять, что это шестнадцатеричные значения, но решение простое и работает идеально. Спасибо!, @Esshahn