Я работаю над проектом, где мне нужно отправить значения 32 бит по UART в MATLAB, где мне нужно распечатать их на терминале MATLAB. Я делаю это, дробя 32 битное значение в 8-битовых значений, как так (:Разделите 32-битное значение на C++ и соедините куски в MATLAB
void Configurator::send(void) {
/**
* Split the 32 bits in chunks of 4 bytes of 8 bits
*/
union {
uint32_t data;
uint8_t bytes[4];
} splitData;
splitData.data = 1234587;
for (int n : splitData.bytes) {
XUartPs_SendByte(STDOUT_BASEADDRESS, splitData.bytes[n]);
}
}
В MATLAB я получаю следующие 4 байта:
252
230
25
155
Теперь вопрос в том, как восстановить 1234587
Правильно ли я создаю массив размером 4 как uint8_t
? Я также хотел бы отметить, что я использую объединение для удобочитаемости. Если я ошибаюсь, я был бы рад услышать почему!