Реализации алгоритмов/Циклический избыточный код: различия между версиями

Содержимое удалено Содержимое добавлено
Добавлен еще один метод расчета CRC-16
Строка 601:
 
{{Hider hiding
|title=Пример программы табличного (быстрого) расчёта Modbus CRC-16 на языке [[C Sharp|C#]]
|content=
<source lang="csharp">
Строка 652:
return crc;
}
}
</source>
}}
 
{{Hider hiding
|title=Пример программы расчёта Modbus CRC-16 на языке [[C Sharp|C#]]
|content=
<source lang="csharp">
//http://www.ccontrolsys.com/w/How_to_Compute_the_Modbus_RTU_Message_CRC
UInt16 ModRTU_CRC(byte[] buf, int len)
{
UInt16 crc = 0xFFFF;
for (int pos = 0; pos < len; pos++) {
crc ^= (UInt16)buf[pos];
for (int i = 8; i != 0; i--) {
if ((crc & 0x0001) != 0) {
crc >>= 1;
crc ^= 0xA001;
}
else
crc >>= 1;
}
}
// Помните, что младший и старший байты поменяны местами, используйте соответственно (или переворачивайте)
return crc;
}
</source>