public static uint crc_val(byte [] data_val)
foreach (var val in data_val)
for (var i = 0; i < 8; i++)
if ((crc_value & 0x0001) != 0)
crc_value = (crc_value >> 1) ^ 0xa001;
crc_value = crc_value >> 1;
public static void Main()
var data = new byte[] { 0x01, 0x03, 0x00, 0x00, 0x00 };
Console.WriteLine(crc_val(data));