Aber auch _packed_ garantiert nicht, dass es keine Füllbytes gibt.
Es gibt nunmal Architekturen, da kann man nicht wahllos im Speicher
Werte laden. Die frühen ARM-Architekturen (bis ARMv5 glaube ich) konnten
32-Bit-Werte nur von Adressen laden, die Teilbar durch 4 waren. Hatte
man dann kein Betriebssystem, das illegale Zugriffe abgefangen und durch
eine Reihe von 8-Bit-Zugriffen (nebst Zusammensetzen des 32-Bit-Wertes)
ersetzt hat, dann gab es eben einen Programmabbruch. Modernere ARM-Cores
können sowas inzwischen, aber es laufen ja noch genug µCs mit ARM7 (was
ein ARMv4 ist).
Was du vor hast, hat noch ein zweites potentielles Problem, nämlich die
Byte Order. Wenn das empfangende System die Bytes in einem int anders
anordnet, kriegst du für deine Integer Müll heraus. x86 und die meisten
ARM sind little-endian (ich glaub AVR auch, oder?), MIPS (z.B. PIC32)
ist big-endian. Es gibt lange quasi-religiöse Diskussionen, was nun
besser ist, aber entscheidend ist, dass es diesen Unterschied gibt.
Da es bisher ging, tu dir keinen Zwang an und mach es wie bisher. Sobald
du aber andere Hardware verwendest, musst dir bewusst sein, dass es
passieren kann, dass es nicht mehr so funktioniert wie zuvor.