c# - 陣列轉數字 - 將int轉換為.NET中的位數組




陣列轉int (5)

使用BitArray類。

int value = 3;
BitArray b = new BitArray(new int[] { value });

如果要獲取這些位的數組,可以將BitArray.CopyTo方法與bool[]數組一起使用。

bool[] bits = new bool[b.Count];
b.CopyTo(bits, 0);

請注意,這些位將從最低有效位存儲到最高有效位,因此您可能希望使用Array.Reverse

最後,如果你想為每個位而不是布爾值得到0和1(我使用一個byte來存儲每個位;比int更少浪費):

byte[] bitValues = bits.Select(bit => (byte)(bit ? 1 : 0)).ToArray();

如何將int轉換為位數組?

如果我有一個值為3的int我想要一個數組,其長度為8,如下所示:

0 0 0 0 0 0 1 1

這些數字中的每一個都在數組中的單獨插槽中,大小為8。


使用Convert.ToString (value, 2)

所以在你的情況下

string binValue = Convert.ToString (3, 2);


我會用單線程實現它,如下所示:

using System;
using System.Collections;

namespace Questions
{
    class Program
    {
        static void Main(string[] args)
        {    
            //get bit Array for number 20
            var myBitArray = new BitArray(BitConverter.GetBytes(20));
        }
    }
}

請注意, BitArray每個元素都存儲為bool,如下面的快照所示:

所以下面的代碼工作:

if (myBitArray[0] == false)
{
    //this code block will execute
}

但是下面的代碼根本沒有編譯:

if (myBitArray[0] == 0)
{
    //some code
}

要轉換int'x'

int x = 3;

一種方法,通過對int的操作:

string s = Convert.ToString(x, 2); //Convert to binary in a string

int[] bits= s.PadLeft(8, '0') // Add 0's from left
             .Select(c => int.Parse(c.ToString())) // convert each char to int
             .ToArray(); // Convert IEnumerable from select to Array

或者,通過使用BitArray類 -

BitArray b = new BitArray(new byte[] { x });
int[] bits = b.Cast<bool>().Select(bit => bit ? 1 : 0).ToArray();

int value = 3;

var array = Convert.ToString(value, 2).PadLeft(8, '0').ToArray();




.net