c#int到二进制(字符串)到数组

时间:2014-07-14 12:27:51

标签: c# arrays

我正在学习c#,我想知道整数中的第3位是1还是0。

所以我接近这个是将int转换为二进制。 然后将字符串转换为数组。 将字符串数组转换为int数组并在第3位上切片并检查值。

我无法让这件事发生。这就是我所处的位置。我正在使用此示例从SO到convert to array

using System;
using System.Text;

class Expression
{
    static void Main()
    {
        int number = 3;
        string binValue = Convert.ToString(number, 2);

        char[] array = binValue.ToCharArray();
        array<int> list = new List<int>();
        for (int i = 0; i < array.Length; i++)
        {
            list.add(value);
        }

        int[] binArr = list.ToArray();
        binArr[2] == 1? "Yes" : "No";
    }
}

2 个答案:

答案 0 :(得分:3)

这完全是错误的做法;只执行二进制算术:

bool bit3IsSet = (number & 4) != 0;

其中4是第3位;你也可以使用:

int bitNumber = 3; // etc
bool bitIsSet = (number & (1 << (bitNumber-1))) != 0;

在一般情况下。

答案 1 :(得分:1)

您不需要进行数组转换:使用String.Substring()函数(re:http://msdn.microsoft.com/en-us/library/system.string.substring%28v=vs.110%29.aspx)检查第三位的值(在您的情况下:binValue.Substring(2,1);以简短形式显示可以写成如下:

bool _bit3 = (Convert.ToString(number, 2).Substring(2,1)=="1")? true:false;