【问题标题】:Get an array of bits that represent an int in c#在c#中获取表示int的位数组
【发布时间】:2013-08-14 01:22:41
【问题描述】:

有没有办法在 c# 中以位显示 int 的表示形式?

1  = 00001
20 = 10100

等等

我尝试过使用 BitConverter,但没有成功。这应该很简单,但我找不到解决方案!

【问题讨论】:

  • 这个问题:stackoverflow.com/questions/6758196/… 似乎对你的问题有一些解决方案。
  • 感谢@EdgySwingsetAcid - 知道这必须在某个地方,只是找不到!提示投票结束...

标签: c# bit-manipulation bit


【解决方案1】:

Convert.ToString(value, base)

将 32 位有符号整数的值转换为其指定基数中的等效字符串表示形式。指定 2 作为基数。

【讨论】:

    【解决方案2】:

    这是一个使用 linq 的单行代码:

    var myint = 20;
    var bytes = Enumerable.Range(0, 32).Select(b => (myint >> b) & 1);
    // { 0, 0, 1, 0, 1, 0 ... }
    

    当然这是相反的顺序,要交换它只需使用:

    var myint = 20;
    var bytes = Enumerable.Range(0, 32).Select(b => (myint >> (31 - b)) & 1);
    // { ..., 0, 1, 0, 1, 0, 0 }
    

    【讨论】:

    • 这很聪明!谢谢你。我会接受 Convert.ToString() 答案,因为它似乎是一种更标准的方法。但我非常喜欢这个答案!
    【解决方案3】:

    您也可以使用BitArray

    var array = new BitArray(BitConverter.GetBytes(1));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-18
      • 2012-06-24
      • 2019-06-05
      • 2021-06-21
      • 2022-01-05
      • 2010-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多