These sort of casts invoke undefined behavior (u8, u16, u32, and u64 all have completely different alignment requirements).