2
我需要將字節數組轉換爲我的結構類型。要做到這一點,我使用的桌面應用程序項目下面的代碼:將字節數組轉換爲精簡框架中的結構
var str = new SFHeader();
int size = Marshal.SizeOf(str);
IntPtr ptr = Marshal.AllocHGlobal(size);
Marshal.Copy(buffer, 0, ptr, size);
str = (SFHeader)Marshal.PtrToStructure(ptr, typeof(SFHeader));
Marshal.FreeHGlobal(ptr);
return str;
哪裏SFHeader
是我的結構。
的問題是該行:
str = (SFHeader)Marshal.PtrToStructure(ptr, typeof(SFHeader));
拋出一個NotSupportedException
當我運行從一個智能設備項目的代碼。還有其他方法可以在Compact Framework中完成這項工作嗎?
[StructLayout(LayoutKind.Sequential)]
public struct SFHeader
{
internal const int MAX_FILENAME_LENGTH = 32;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_FILENAME_LENGTH)]
public string FileName;
public int Offset;
public short Size;
public byte Flags;
public byte Source;
public long LastWriteTime;
}
請參閱編輯。 – Nick
@Nick嗯..你也有C頭文件的定義嗎? – Alan
是的,爲什麼?你想看看C的定義嗎? – Nick