Контрольная сумма массива байт - Visual Basic .NET
Формулировка задачи:
Всем здравствуйте.
Подскажите, как подсчитать контрольную сумму массива байт.
На С это выглядит так:
где Send - имя массива из 6 байт.
На выходе должно получиться два байта контрольной суммы.
Листинг программы
- Send[0]=0x04;
- Send[1]=0x44;
- Send[2]=0x03;
- Send[3]=0xDE;
- Send[4]=0xFF;
- Send[5]=0xFF;
- myCRC=CRC16(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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д