Изменение битов - 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(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д