Контрольная сумма массива байт - Visual Basic .NET

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

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

Всем здравствуйте. Подскажите, как подсчитать контрольную сумму массива байт. На С это выглядит так:
Листинг программы
  1. Send[0]=0x04;
  2. Send[1]=0x44;
  3. Send[2]=0x03;
  4. Send[3]=0xDE;
  5. Send[4]=0xFF;
  6. Send[5]=0xFF;
  7. myCRC=CRC16(Send,6);
где Send - имя массива из 6 байт. На выходе должно получиться два байта контрольной суммы.

Решение задачи: «Контрольная сумма массива байт»

textual
Листинг программы
  1. ushort CRC16(byte[] buf)
  2. {
  3.     ushort i = 0xFFFF;        //Нач.значение CRC-16
  4.     ushort j;
  5.     for (int idx=0; idx<buf.Length; idx++)
  6.     {
  7.         j = (ushort)buf[idx];
  8.         i = crc(i,j);
  9.     }
  10.     return i;
  11. }
  12.  
  13. ushort crc(ushort i, ushort j)
  14. {
  15.     byte n;
  16.     i ^= j;
  17.     for (n=8; n>0; n--)
  18.     {
  19.         if ((i & 0x0001) > 0)
  20.         {
  21.             //Если выдвинутый вправо разряд -1
  22.             i >>= 1;
  23.             i ^= 0xA001;
  24.         }
  25.         else
  26.         {
  27.             i >>= 1;
  28.         }
  29.     }
  30.     return i;
  31. }

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


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

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

11   голосов , оценка 4.091 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы