Вычисление 8-и битных контрольной суммы - C#
Формулировка задачи:
Доброго времени суток господа! Нужна ваша помощь. Есть функция на Си для вычисления 8-и битных контрольных сумм. Нужно транслировать её на C#. Или может кто нибудь знает как называется алгоритм, чтобы знать что гуглить, разобраться и закодить самому.
typedef unsigned char u1; u1 cs(u1 const* buf, int count) { enum { bits = 8, lShift = 2, rShift = bits - lShift }; #define ROT_LEFT(val) ((val « lSshift) | (val » rShift)) u1 res = 0; while(count--) res = ROT_LEFT(res) ^ *buf++; return ROT_LEFT(res); }
Решение задачи: «Вычисление 8-и битных контрольной суммы»
textual
Листинг программы
using System; namespace ConsoleAppTest { class Program { static byte RotLeft(byte val, byte lShift, byte rShift) { return (byte)((val << lShift) | (val >> rShift)); } static byte CS(byte[] buffer) { byte bits = 8; byte lShift = 2; byte rShift = (byte)(bits - lShift); byte res = 0; byte index = 0; int count = buffer.Length; while (count-- > 0) res = (byte)(RotLeft(res, lShift, rShift) ^ buffer[index++]); return RotLeft(res, lShift, rShift); } static void Main() { byte[] b = { 1, 2, 3, 4, 5, 6, 7, 8 }; Console.WriteLine(CS(b)); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д