История изменений
Исправление Obezyan, (текущая версия) :
Возможно, я не совсем понял задачу в 3 часа ночи, но сонный обезьянний мозг выдаёт что-то типа:
uint8_t data[4];
uint32_t val;
uint8_t *convert_32_to_8(uint32_t data, uint8_t flag);
void test() {
val = 0x12345678;
for (uint8_t i=0; i<4; i++)
{
data[i] =
(*convert_32_to_8(val, i));
}
// остальная логика работы с data
}
uint8_t *convert_32_to_8(uint32_t data, uint8_t flag)
{
switch(flag)
{
case 0: temp = (uint32_t) (data>>24); break;
case 1: temp = (uint32_t) (data>>16); break;
case 2: temp = (uint32_t) (data>>8); break;
case 3: temp = (uint32_t) (data); break;
default: temp = 0xFF; break;
}
return &temp;
}
цикл можете сами развернуть по желанию.
Логика: левую границу окна байт контролируем сдвигом вправо, правую - кастом uint8_t.
Исходная версия Obezyan, :
Возможно, я не совсем понял задачу в 3 часа ночи, но сонный обезьянний мозг выдаёт что-то типа:
uint8_t data[4];
uint32_t val;
uint8_t *convert_32_to_8(uint32_t data, uint8_t flag);
void test() {
val = 0x12345678;
for (uint8_t i=0; i<4; i++)
{
data[i] =
(*convert_32_to_8(val, i));
}
// остальная логика работы с data
}
uint8_t *convert_32_to_8(uint32_t data, uint8_t flag)
{
switch(flag)
{
case 0: temp = (uint32_t) (data>>24); break;
case 1: temp = (uint32_t) (data>>16); break;
case 2: temp = (uint32_t) (data>>8); break;
case 3: temp = (uint32_t) (data); break;
default: temp = 0xFF; break;
}
return &temp;
}
цикл можете сами развернуть по желанию.