Контрольная сумма массива байт - Visual Basic .NET
Формулировка задачи:
Всем здравствуйте.
Подскажите, как подсчитать контрольную сумму массива байт.
На С это выглядит так:
где Send - имя массива из 6 байт.
На выходе должно получиться два байта контрольной суммы.
Решение задачи: «Контрольная сумма массива байт»
textual
Листинг программы
ushort CRC16(byte[] buf)
{
ushort i = 0xFFFF; //Нач.значение CRC-16
ushort j;
for (int idx=0; idx<buf.Length; idx++)
{
j = (ushort)buf[idx];
i = crc(i,j);
}
return i;
}
ushort crc(ushort i, ushort j)
{
byte n;
i ^= j;
for (n=8; n>0; n--)
{
if ((i & 0x0001) > 0)
{
//Если выдвинутый вправо разряд -1
i >>= 1;
i ^= 0xA001;
}
else
{
i >>= 1;
}
}
return i;
}