首页 > 解决方案 > 如何将 uint 转换为 bool 数组?

问题描述

例如

uint <- 1

我想得到

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

如果

uint <- 8

得到它

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0

只是按位格式化,我该怎么办?

标签: c#bituint

解决方案


您可以为此尝试Linq :

  using System.Linq;

  ...

  uint source = 8;

  int[] result = Enumerable
    .Range(0, sizeof(uint) * 8)
    .Reverse()
    .Select(i => (source & (1 << i)) == 0 ? 0 : 1)
    .ToArray();

  Console.Write(string.Join(" ", result));

结果:

   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0

如果你想bool[] result查询可以

  bool[] result = Enumerable
    .Range(0, sizeof(uint) * 8)
    .Reverse()
    .Select(i => (source & (1 << i)) != 0)
    .ToArray();

推荐阅读