好的,在C ++中,我可以创建一个包含一堆值类型的struct对象,并在需要时将其写入一个写入语句中的二进制文件,如下所示:
struct DataFileHeader {
unsigned short Id;
unsigned short Type;
unsigned int Count;
unsigned int Offset;
};
...
struct DataFileHeader dataFileHeader;
...
rc = _write(fileHandle, &dataFileHeader, 12);
有没有办法在c#中这样做?我已经将我的结构转换为c#中的类,并且正在使用BinaryFormatter并尝试序列化该对象,但这会在流中添加一堆文本和其他内容。我只想写出对象中的所有值字段。这是可能的还是我必须分别写出对象上的每个字段?
答案 0 :(得分:0)
void Main()
{
var fileHeader = new DataFileHeader()
{
Count = 10,
Id = 10,
Offset = 10,
Type = 10
};
Serialize(fileHeader).Dump();
}
// Define other methods and classes here
public byte[] Serialize<TObject>(TObject obj)
{
BinaryFormatter binaryFormatter = new BinaryFormatter();
byte[] ret = null;
using (MemoryStream ms = new MemoryStream())
{
binaryFormatter.Serialize(ms, obj);
ret = ms.ToArray();
}
return ret;
}
[Serializable]
public struct DataFileHeader
{
public short Id;
public short Type;
public int Count;
public int Offset;
};
如果这不起作用,我认为单独进行可能是唯一的方法。
BitConverter.GetBytes(fileHeader.Count).Concat(BitConverter.GetBytes(fileHeader.Count)).Concat(BitConverter.GetBytes(fileHeader.Count)).Concat(BitConverter.GetBytes(fileHeader.Count)).Dump();