【发布时间】:2020-07-19 01:10:41
【问题描述】:
我搜索了高和低以找到一种简单的方法(如在 C++ 中)在 C# 中执行此操作,我想我不知道具体的搜索词。在 C++ 中,我使用下面的代码放入一个 16 位无符号整数,然后我可以使用它轻松获取各个位。我如何在 C# 中做到这一点?我尝试了BitArray,但它似乎没有提供一种方法来输入一个无符号的 16 位值然后获取位。也许BitArray 不是办法。
使用这种方式,我可以从我的设备(步进电机)读取状态寄存器值,将此值分配给位域,无需额外代码即可轻松访问其中的位。
非常感谢您的帮助。
typedef union bitfield16_union
{
U16 uiWord; // unsigned short
struct
{
unsigned short b0 : 1; // LSB
unsigned short b1 : 1;
unsigned short b2 : 1;
unsigned short b3 : 1;
unsigned short b4 : 1;
unsigned short b5 : 1;
unsigned short b6 : 1;
unsigned short b7 : 1;
unsigned short b8 : 1;
unsigned short b9 : 1;
unsigned short b10 : 1;
unsigned short b11 : 1;
unsigned short b12 : 1;
unsigned short b13 : 1;
unsigned short b14 : 1;
unsigned short b15 : 1; // MSB
} b;
// ************
} BITFIELD16;
// ************
main
{
BITFIELD16 statusWord;
statusWord.uiWord = 154;
if(statusWord.b.b3) {do something}
}
【问题讨论】:
-
也许
StructLayout属性和LayoutKind.Explicit可以帮助你。
标签: c# int unsigned bit-fields