在C中带位域的结构体怎么转换成C#的结构体,如下面的结构体
struct STU
{
INT8U a : 4;
INT8U b : 4;
INT16U c;
INT16U d : 4;
INT16U e : 12;
}
struct STU
{
INT8U a : 4;
INT8U b : 4;
INT16U c;
INT16U d : 4;
INT16U e : 12;
}
解决方案 »
- 键盘按下一个键,实现按钮按下.
- 关于版主申请与权限的数据表的一个设计
- 求 如何获取类似下载网站下载地址,股票软件连接线路的闲忙状态
- 托管的 PInvoke 签名与非托管的目标签名不匹配
- 为什么用SendARP获取局域网的网卡的MAC地址只返回前4位???而不是6位呢?
- 如何读取MP3文件里面个歌词信息,给一些代码,谢谢了
- 有没有NHibernate的配置和使用介绍
- xbox360 计算身高的办法
- 动态创建的控件组如何添加事件???
- 这样把windows自定义控件加入到windows窗体上?
- C#.NET 用FtpWebRequest 方式连接FTP服务器 问题
- 求基于TCP/IP实现的服务器端是窗体应用程序的最简单的WCF例子
public enum Permission
{
View = 1,
Create = 2,
Edit = 4,
Delete = 8,
All = View | Create | Edit | Delete
}
[StructLayout(LayoutKind.Explicit,Size=5)]
class STU
{
[FieldOffset(0)]
byte _value1=0; [FieldOffset(1)]
UInt16 _value2=0; [FieldOffset(3)]
UInt16 _value3=0; public int a
{
set { _value1 = Convert.ToByte((_value1 & 0xF0) | (value & 0x0F)); }
get { return (_value1 & 0x0F); }
} public int b
{
set { _value1 = Convert.ToByte((_value1 & 0x0F) | ((value & 0x0F) << 4)); }
get { return ((_value1 & 0xF0) >> 4); }
} public int c
{
set { _value2 = Convert.ToUInt16(value); }
get { return _value2; }
}
public int d
{
set { _value3 = Convert.ToUInt16((_value3 & 0xFFF0) | (value & 0x000F)); }
get { return (_value3 & 0x000F); }
} public int e
{
set { _value3 = Convert.ToUInt16((_value3 & 0x000F) | ((value & 0x0FFF) << 4)); }
get { return ((_value3 & 0xFFF0) >> 4); }
}
}