Изменение битов - C#

Узнай цену своей работы

Формулировка задачи:

Я бы хотел узнать, можно ли в C# как нибудь поменять биты в байте например? я хочу попробовать написать крипт систему на основе замены некоторых битов, например с 0 на 1 и наоборот, но не всех, а только например 1-го и 5-го

Решение задачи: «Изменение битов»

textual
Листинг программы
static void Main(string[] args)
        {
            Random r = new Random();
            int k = r.Next(0, 255);
 
            //исходный байт
            byte b = Convert.ToByte(k);
 
            int bi = Convert.ToInt32(b);
            string hex = Convert.ToString(b, 2);
            string num = hex;
            while (num.Length < 8)
            {
                num = "0" + num;
            }
            Console.WriteLine("Исходный  байт");
            Console.WriteLine(Convert.ToString(b));
            Console.WriteLine(num);
            char[] CH = new char[8];
            int index = CH.Length - hex.Length;
            hex.CopyTo(0, CH, index, hex.Length);
            //заменяем нули на единици и наоборот в 1 и 5 битах
            if (CH[7] == '1')
                bi = bi - 1;//отнимаем вес первого бита
            else
                bi = bi + 1;//прибавляем вес первого бита 
            if (CH[2] == '1')
                bi = bi - 32;//отнимаем вес пятого бита
            else
                bi = bi + 32;//прибавляем вес пятого бита
 
            //РЕЗУЛЬТАТ
            byte output = Convert.ToByte(bi);
            string outp = Convert.ToString(output, 2);
            while (outp.Length < 8)
            {
                outp = "0" + outp;
            }
            Console.WriteLine("Байт после замены 1 и 5 битов");
            Console.WriteLine(Convert.ToString(output));
            Console.WriteLine(outp);
            Console.ReadKey();
 
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.667 из 5