Проблема проста: взять 32-разрядное или 64-разрядное целое число и разделить его для отправки через (обычно) 1-байтовый интерфейс, такой как uart, spi или i2c.
Для этого я могу легко использовать битовую маскировку и сдвиг, чтобы получить то, что я хочу.Тем не менее, я хочу, чтобы он был переносимым, который будет работать с прямым и младшим порядком байтов, но также заставлять его работать на платформах, которые не сбрасывают биты, но вращаются через перенос (маскирование избавляет от лишних битов, верно?).
Пример кода:
uint32_t value;
uint8_t buffer[4];
buffer[0] = (value >> 24) & 0xFF;
buffer[1] = (value >> 16) & 0xFF;
buffer[2] = (value >> 8) & 0xFF;
buffer[3] = value & 0xFF;
Я хочу гарантировать, что это работает на любой платформе, которая поддерживает 32-разрядные целые или более.Я не знаю, правильно ли это.