簡體   English   中英

將 C# 字節轉換為 BitArray

[英]Converting C# byte to BitArray

是否有任何可用於將byte轉換為BitArray預定義函數?

一種方法是檢查byte值的每一位,然后執行按位運算。 我想知道是否有比這更直接的方法。

是的,使用適當的BitArray()構造函數描述在這里

var bits = new BitArray(arrayOfBytes);

您可以使用new BitArray(new byte[] { yourBite })調用它來創建一個字節數組。

如果你有一個字節數甚至一個整數等。

BitArray myBA = new BitArray(BitConverter.GetBytes(myNumber).ToArray());

注意:您需要對 System.Linq 的引用

解決方案很簡單,只需兩條指令(在以下代碼中標記),只需使用Convert.ToString(btindx,2)將字節轉換為二進制,將結果字符串零填充為 8 位(或長度為 8), strBin.PadLeft(8,'0'); 並連接所有二進制字符串以形成您的字節數組的位流,如果您願意,您還可以形成一個字符串數組來分隔每個字節的二進制表示。

    byte[] bt = new byte[2] {1,2};

    string strBin =string.Empty;
    byte btindx = 0;
    string strAllbin = string.Empty;

    for (int i = 0; i < bt.Length; i++)
    {
        btindx = bt[i];

        strBin = Convert.ToString(btindx,2); // Convert from Byte to Bin
        strBin = strBin.PadLeft(8,'0');  // Zero Pad

        strAllbin += strBin;
    }

如果所討論的BitArray的長度不是字節(8)中位數的倍數,您可以執行以下操作以確保從byte[]轉換為BitArray時的位數正確:

public static byte[] ToByteArray (this BitArray bits) {
    byte[] ret = new byte[(bits.Length - 1) / 8 + 1];
    bits.CopyTo (ret, 0);
    return ret;
}

public static BitArray ToBitArray (this byte[] bytes, int bitCount) {
    BitArray ba = new BitArray (bitCount);
    for (int i = 0; i < bitCount; ++i) {
        ba.Set (i, ((bytes[i / 8] >> (i % 8)) & 0x01) > 0);
    }
    return ba;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM