public bool FillHeaderData(byte[] data) { int len = Marshal.SizeOf(Header.GetType()); IntPtr @in = Marshal.AllocHGlobal(len); Marshal.Copy(data, 0, @in, len); Header = (RpmStruct.RPMHeader)Marshal.PtrToStructure(@in, Header.GetType()); Marshal.FreeHGlobal(@in); unchecked { Header.bytesDataCount = (int)((uint)Header.bytesDataCount).ReverseBytes(); Header.entryCount = (int)((uint)Header.entryCount).ReverseBytes(); } byte[] buffer = new byte[RpmStruct.RPM_MAGIC_HEADER_NUMBER.Length]; unsafe { fixed(byte *ptr = Header.magic) { int i = 0; for (byte *d = ptr; i < RpmStruct.RPM_MAGIC_HEADER_NUMBER.Length; ++i, ++d) { buffer[i] = *d; } } } return(ByteArrayCompare(buffer, RpmStruct.RPM_MAGIC_HEADER_NUMBER)); }
public bool FillHeaderData(byte[] data) { int len = Marshal.SizeOf(Header.GetType()); IntPtr @in = Marshal.AllocHGlobal(len); Marshal.Copy(data, 0, @in, len); Header = (RpmStruct.RPMHeader)Marshal.PtrToStructure(@in, Header.GetType()); Marshal.FreeHGlobal(@in); unchecked { Header.bytesDataCount = (int)((uint)Header.bytesDataCount).ReverseBytes(); Header.entryCount = (int)((uint)Header.entryCount).ReverseBytes(); } byte[] buffer = new byte[RpmStruct.RPM_MAGIC_HEADER_NUMBER.Length]; unsafe { fixed (byte* ptr = Header.magic) { int i = 0; for (byte* d = ptr; i < RpmStruct.RPM_MAGIC_HEADER_NUMBER.Length; ++i, ++d) { buffer[i] = *d; } } } return ByteArrayCompare(buffer, RpmStruct.RPM_MAGIC_HEADER_NUMBER); }