如何在C#中将所有数组元素设置为一个变量

时间:2019-03-16 14:50:30

标签: c# arrays

例如,我有一个像这样的数组

int[] array = {1,0,0,1,0} 

和一个int variable=0;

我想将所有数组元素设置为变量。我该怎么办?

variable=10010

另外,如果考虑这种情况的逆转吗?变量的值设置为数组吗?

int something=10000 to int[] something={1,0,0,0,0}

感谢您的所有贡献

4 个答案:

答案 0 :(得分:2)

        //==============go forwards===================
        int[] array = { 1, 0, 0, 1, 0 };
        int variable = 0;
        for (int i = 0; i < array.Length; ++i)
        {
            //first element
            if (i == 0)
                variable = array[i];
            else
            {
                variable *= 10;
                variable += array[i];
            }
        }

        //print resualts 
        Console.WriteLine(variable);




        //===================go backwards===============
        int variable2 = 10010;

        //convert it into a char array
        string value = variable2+"";

        //set the array length based on the size
        int[] reverse = new int[value.Length];

        //loop
        for (int i = 0; i < value.Length; ++i)
        {
            //grab the number from a char value and push it into the array
            reverse[i] = (int)Char.GetNumericValue(value[i]);
        }

        //print out
        for(int i = 0; i <reverse.Length;++i)
        {
            Console.WriteLine("[" + i + "] = " + reverse[i]);
        }

答案 1 :(得分:0)

我在这里打电话,请耐心等待,但是如果性能不成问题,那该怎么办呢?

int.Parse(string.Join(string.Empty, array.Select(d => d.ToString()));

很显然,您在解析时需要一些错误处理,以防止溢出,无效字符等。

答案 2 :(得分:0)

还有另一种方法,但是不像其他方法那么紧凑。此方法演示了从0和1的数组构造int的按位操作。

class Program
{     
    // converts array of 0's and 1's to an int, and assumes big endian format.
    static int bitArrayToInt(int[] bit_array)
    {
        int rc = 0;
        for (int i = 0; i < bit_array.Length; i++)
        {
            rc <<= 1; // bit shift left
            rc |= bit_array[i]; // set LSB according to arr[i]. 
        }
        return rc;
    }        

    static void Main(string[] args)
    {
        int[] array = { 1, 0, 0, 1, 0 };
        int rc = bitArrayToInt(array);

        System.Console.WriteLine("{0} = {1} binary",rc, Convert.ToString(rc, 2));
        System.Console.ReadLine();   
    }
}

如何解决问题有很多选择。

答案 3 :(得分:0)

我能想到的最快捷的方法。

        byte[] array = { 1, 0, 1, 0, 0 };
        string temp = "";
        int result = 0;

        for (int i = 0; i < array.Length; i++)
            temp += array[i].ToString();

        result = Convert.ToInt32(temp);