Пример #1
0
 public static byte[] AddPadding(byte[] data, int saveBits, int addBits, LeftRightPadding leftOrRightPadding)
 {
     bool[] sourceData    = BinaryHelper.BytesToBits(data);
     bool[] removedResult = AddPadding(sourceData, saveBits, addBits);
     byte[] result        = BinaryHelper.BitsToBytes(removedResult, leftOrRightPadding);
     return(result);
 }
Пример #2
0
        /// <summary>
        /// Массив битов преобразуется в массив байтов  0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1 -> 0x01, 0x01
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public static byte[] BitsToBytes(bool[] data, LeftRightPadding leftRightPadding)
        {
            List <byte> retval     = new List <byte>();
            List <bool> tmpData    = new List <bool>();
            List <bool> sourceData = new List <bool>();

            #region Если количество бит не кратно 8, то дополняем массив старшими нулевыми битами до границы 8 бит чтобы было целое количество байтов
            int rest = data.Length % 8;
            if (rest > 0)
            {
                rest = 8 - rest;
            }
            if (leftRightPadding == LeftRightPadding.EmptyBitsAtLeft) // Добавляем нули слева - старшие биты
            {
                for (int i = 0; i < rest; i++)
                {
                    sourceData.Add(false);
                }
            }
            #endregion

            sourceData.AddRange(data);

            #region Если количество бит не кратно 8, то дополняем массив младшими нулевыми битами до границы 8 бит чтобы было целое количество байтов
            if (leftRightPadding == LeftRightPadding.EmptyBitsAtRight) // Добавляем нули справа - младшие биты
            {
                for (int i = 0; i < rest; i++)
                {
                    sourceData.Add(false);
                }
            }
            #endregion

            foreach (bool b in sourceData)
            {
                tmpData.Add(b);
                if (tmpData.Count == 8)
                {
                    byte byte1 = (byte)ReadInteger(tmpData.ToArray(), 0, 8);
                    retval.Add(byte1);
                    tmpData.Clear();
                }
            }
            return(retval.ToArray());
        }