在C#中将Dword转换为位数组

时间:2017-11-16 07:05:32

标签: c# bit dword

我正在使用LibnoDave库连接到西门子PLC的应用程序中工作。我得到一个Dword值,我将其转换为INT值,但现在我需要将此INT值转换为BIT数组。例如,我得到一个INT值,二进制数为62000,即1111001000110000。我需要那个价值。怎么办呢?

2 个答案:

答案 0 :(得分:2)

如果您想用二进制代表uint,请尝试使用Convert class:

  uint source = 62000;

  string result = Convert.ToString(source, 2);

  Console.WriteLine(result);

结果

  1111001000110000

如果您想要System.Collections.BitArray实例:

  using System.Collections;
  using System.Linq; 

  ...

  uint source = 62000;

  BitArray array = new BitArray(BitConverter.IsLittleEndian 
    ? BitConverter.GetBytes(source)
    : BitConverter.GetBytes(source).Reverse().ToArray());

  // Test
  string result = string
    .Concat(array
       .OfType<bool>()
       .Reverse()
       .Select(item => item ? 1 : 0))
    .TrimStart('0');

  Console.WriteLine(result);

结果

  1111001000110000 

答案 1 :(得分:0)

问题是在DWORD中我只需要第二个字。例如,如果我收到11111111111111110000000000000000,我只需要这个Dword的1111111111111111。