Безопасный способ сделать это, который всегда будет работать, это просто сдвинуть каждый байт индивидуально:
uint32_t i = (uint8_t(message[0]) << 24) | (uint8_t(message[1]) << 16) | (uint8_t(message[2]) << 8) | uint8_t(message[3]);
Возможно, вам придется изменить порядок байтов в зависимости от порядка следования вашей строки.
Вы также можете просто переинтерпретировать приведение к целому числу в зависимости от порядкового номера строки, совпадающей с порядковым номером вашего процессора, от того, выровнена ли строка по правильной границе байта et c:
Int i = *reinterpret_cast<int*>(message);