Я всегда изучаю и проверяю, как именно в памяти лежат данные. В особо запущенных случаях могу просто взять массив и руками заполнять его, чтобы было точное понимание, где какой байт лежит. Тут уже 100% гарантия.
К слову, пока что я не встречал случая, чтобы кросс-компилятор под встроенную систему тратил драгоценную память на выравнивание. Вон, в TRM на Cortex отсутствие такой необходимости вообще подаётся как великое достижение - смотрите-смотрите, радость какая, наше ядро может читать с любого адреса, нет нужды выкидывать байты из-за несовершенства железа!
Так что единственная сложность с передачей бинарных данных состоит в том, что нынче многие считают память исключительно мегабайтами и не хотят разбираться в тонкостях побайтного хранения информации.