[c#] 將int轉換為.NET中的位數組



2 Answers

使用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();
Question

如何將int轉換為位數組?

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

0 0 0 0 0 0 1 1

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




int value = 3;

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



我剛碰到一個實例......

int val = 2097152;
var arr = Convert.ToString(val, 2).ToArray();
var myVal = arr[21];

......沒有產生我想要的結果。 在上面的'myVal'中,存儲在位置21的數組中的值為'0'。 應該是'1'。 我不確定為什麼我收到了一個不准確的值,它讓我感到困惑,直到我在C#中找到另一種方法將INT轉換為位數組:

int val = 2097152;
var arr = new BitArray(BitConverter.GetBytes(val));
var myVal = arr[21];

這會將結果'true'作為'myVal'的布爾值。

我意識到這可能不是獲得這個值的最有效方法,但它非常簡單,簡單,可讀。




Related



Tags

c# c#   .net .net