我需要能够执行以下操作:
public struct entry_h
{
public ulong fileid;
public byte hash[20];
};
就像在 C/C++ 中一样
我正在对结构进行不安全的指针转换,这就是我需要能够做到这一点的原因。:/
entries[i].ehash = *(entry_h*)(src + header_size + (R64(pup->entryCount) * 0x20) + (i * 0x20));
如果您在 C# 中使用 unsafe 关键字,则结构通过 fixed 关键字支持固定大小的缓冲区。
http://msdn.microsoft.com/en-us/library/zycewsya%28v=vs.80%29.aspx
例子:
public fixed byte hash[20];
否则,通过安全代码,它会是这样的:
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public byte[] hash;