Вычисление 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));
        }
    }
}

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


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

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

10   голосов , оценка 3.9 из 5
Похожие ответы