c# - C# - 将数字转换为最小 BitArray 的最快方法是什么
问题描述
我想将一个数字转换为一个 BitArray,生成的 BitArray 只是它需要的大小。
例如:
BitArray tooBig = new BitArray(new int[] { 9 });
产生一个长度为 32 位的 BitArray,但是对于值 9,只需要 4 位。我怎样才能创建只要它们需要的 BitArrays?所以在这个例子中,4 位。或者对于数字 260,我预计 BitArray 的长度为 9 位
解决方案
您可以先找出所有位,然后通过检查最低有效位是 1 还是 0,然后右移直到数字为 0 来创建数组。请注意,这不适用于第 32 位为 1 的负数到指示标志。
public BitArray ToShortestBitArray(int x)
{
var bits = new List<bool>();
while(x > 0)
{
bits.Add((x & 1) == 1);
x >>= 1;
}
return new BitArray(bits.ToArray());
}
推荐阅读
- anylogic - How I can evaluate a condition on next time-step in anylogic?
- git - GitHub 存储库的基本版与高级版
- node.js - 当角色有空格时按名称查找角色
- sharepoint - 有没有办法在 Sharepoint 列表中添加一个新列,从该列表中的另一列复制数据?
- c# - 无法打印堆栈
C# - github - 建立您的形象时出了点问题。复制失败:stat /var/lib/docker/tmp/docker-builder982586077/*/MyFamilyManager.API
- python - 我如何爬取准备好的 url 列表
- sql - 选择最大值(sql)
- flutter - 强制纵向模式使 Flutter 应用无响应
- php - 创建重写规则后传递参数