C++;CLI如何使用BinaryWriter编写非托管结构 我有一个结构,它在两个非托管和托管(CLI)C++项目之间共享。 struct FileHeader { uint16_t a; uint16_t b; uint32_t c; uint32_t d; };

C++;CLI如何使用BinaryWriter编写非托管结构 我有一个结构,它在两个非托管和托管(CLI)C++项目之间共享。 struct FileHeader { uint16_t a; uint16_t b; uint32_t c; uint32_t d; };,c++,c++-cli,managed-c++,C++,C++ Cli,Managed C++,(我不想将此结构修改为托管结构,例如) 到目前为止我拥有的: FileHeader FileHeader={}; ... IntPtr ptr((void*)和文件头); 数组^buffer=gcnew数组(sizeof(FileHeader)); System::Runtime::InteropServices::Marshal::Copy(ptr、缓冲区、0、sizeof(FileHeader)); fileWriter->写入(缓冲区);//System::IO::BinaryWriter

(我不想将此结构修改为托管结构,例如)

到目前为止我拥有的:

FileHeader FileHeader={};
...
IntPtr ptr((void*)和文件头);
数组^buffer=gcnew数组(sizeof(FileHeader));
System::Runtime::InteropServices::Marshal::Copy(ptr、缓冲区、0、sizeof(FileHeader));
fileWriter->写入(缓冲区);//System::IO::BinaryWriter
使用System::IO::BinaryWriter是否还有其他(更好的)方法来编写此结构数据

[Serializable] 
ref struct FileHeader { ... };
FileHeader fileHeader = { };

...

IntPtr ptr((void*)&fileHeader);  

array<Byte>^ buffer = gcnew array<Byte> (sizeof(FileHeader)); 

System::Runtime::InteropServices::Marshal::Copy(ptr, buffer, 0, sizeof(FileHeader));

fileWriter->Write(buffer); // System::IO::BinaryWriter