嗚嗚喔學習筆記: Bit Flag C#

搜尋此網誌

2022年1月17日 星期一

Bit Flag C#

連續的bool array 可以改成連續的 bit 來儲存 可以壓縮 8倍 記憶體


public static class BitHelper
{

    public static byte[] BoolAryToBits(bool[] bools)
    {
        if (bools == null)
        {

            Debug.LogError("get null? ");
            return null;
        }
        int len = bools.Length >> 3;
        if (bools.Length % 8 != 0)
        {
            len++;

        }
        byte[] result = new byte[len];
        for (int i = 0; i < bools.Length; i++)
        {

            bool setTrue = bools[i];
            if (((i >> 3) < result.Length) && setTrue)
            {

                result[i >> 3] |= (byte)(1 << (i & 7));//一個bit可以為0或1足夠判斷了
            }
        }

        return result;
    }
}



沒有留言:

張貼留言