Dav*_*vid 10 c c# bit-manipulation code-conversion
我需要将C结构转换为使用位字段的C#.
typedef struct foo
{
unsigned int bar1 : 1;
unsigned int bar2 : 2;
unsigned int bar3 : 3;
unsigned int bar4 : 4;
unsigned int bar5 : 5;
unsigned int bar6 : 6;
unsigned int bar7 : 7;
...
unsigned int bar32 : 32;
} foo;
Run Code Online (Sandbox Code Playgroud)
有人知道怎么做吗?
小智 5
正如本答案和本MSDN文章中所述,您可能正在寻找以下内容而不是aBitField
[Flags]
enum Foo
{
bar0 = 0,
bar1 = 1,
bar2 = 2,
bar3 = 4,
bar4 = 8,
...
}
Run Code Online (Sandbox Code Playgroud)
因为计算到2 32可能有点烦人,你也可以这样做:
[Flags]
enum Foo
{
bar0 = 0,
bar1 = 1 << 0,
bar2 = 1 << 1,
bar3 = 1 << 2,
bar4 = 1 << 3,
...
}
Run Code Online (Sandbox Code Playgroud)
您可以像在C中期望的那样访问您的标志:
Foo myFoo |= Foo.bar4;
Run Code Online (Sandbox Code Playgroud)
.NET 4中的C#会使用该HasFlag()方法抛出一个骨骼.
if( myFoo.HasFlag(Foo.bar4) ) ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6907 次 |
| 最近记录: |