Я искал все выше и ниже, чтобы найти простой способ (как в C ++) сделать это в 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}
}