fn get_struct_from_bytes<T>(data: &[u8]) -> T
Will fill the table from the header data, and zero out remaining bytes if any are left
type <T> must be valid when some parts of it is zero
<T>
TODO: should this be unsafe?