这里原C里面的结构体代码:
typedef struct _USER_TYPE_STRUCT
{
UINT8 Power: 4; /*User Privilege */
UINT8 TempFlg: 1; /*Reserve*/
UINT8 DuressFlg: 1; /*Reserve*/
UINT8 Reserve: 2; /*Reserve*/
} USER_TYPE;
用sizeof(USER_TYPE)测试结果为1;
下面是我自己的转换成C#的代码:
[StructLayout(LayoutKind.Explicit)]
public struct USER_TYPE
{
[FieldOffset(0)]
byte Power; /*User Privilege */
[FieldOffset(4)]
byte TempFlg; /*Reserve*/
[FieldOffset(5)]
byte DuressFlg; /*Reserve*/
[FieldOffset(6)]
byte Reserve;// 2; /*Reserve*/
}
用Marshal.SizeOf测试结果为7,明显不对啊。
求真相!!!!谢谢!C#Cstruct
typedef struct _USER_TYPE_STRUCT
{
UINT8 Power: 4; /*User Privilege */
UINT8 TempFlg: 1; /*Reserve*/
UINT8 DuressFlg: 1; /*Reserve*/
UINT8 Reserve: 2; /*Reserve*/
} USER_TYPE;
用sizeof(USER_TYPE)测试结果为1;
下面是我自己的转换成C#的代码:
[StructLayout(LayoutKind.Explicit)]
public struct USER_TYPE
{
[FieldOffset(0)]
byte Power; /*User Privilege */
[FieldOffset(4)]
byte TempFlg; /*Reserve*/
[FieldOffset(5)]
byte DuressFlg; /*Reserve*/
[FieldOffset(6)]
byte Reserve;// 2; /*Reserve*/
}
用Marshal.SizeOf测试结果为7,明显不对啊。
求真相!!!!谢谢!C#Cstruct
解决方案 »
- 在ASP.NET打印报表Excel和PDF,求高手?
- 关于线程里弹出模态框的问题
- C# 调用Cmd程式问题
- pictureBox如何显示资源中的图片
- C#连Orcale9.0版本的错误问题
- 小弟做了一个oracle存储过程访问代码生成工具。希望这个工具对大家有用。也能帮我测试,测试。
- 如何解决在 c#中调用word时产生的版本问题?
- 五一散分!!!做好的程序怎么打包 啊?
- 如果一个网页内有几个框架,用axWebBrowser1怎样可以读取指定框架的内容?
- 我用c#调用其他厂家的DLL总是不成,大家帮忙看看
- 使用HostingEnvironment.Impersonate的问题
- 自定义Datagridview错误检验规则及提示 没高手还是不屑回答?
只要你能通过C#控制这个结构的尺寸,就可以调用
enum _USER_TYPE_ENUM
{
Power=0x1,
TempFlg=0x10,
DuressFlg=0x20,
Reserve=0x40
}struct USER_TYPE
{
_USER_TYPE_ENUM userType;
}
enum _USER_TYPE_ENUM
{
Power=0xF,
TempFlg=0x10,
DuressFlg=0x20,
Reserve=0xC0
}
struct USER_TYPE
{
_USER_TYPE_ENUM userType;
}