8.7. Python CRC algorithm¶
Below is an example of our CRC-16/MODBUS algorithm, which is written in Python.
def crc16(data: bytes):
crc = 0xffff
for cur_byte in data:
crc = crc ^ cur_byte
for _ in range(8):
a = crc
carry_flag = a & 0x0001
crc = crc >> 1
if carry_flag == 1:
crc = crc ^ 0xa001
return bytes([crc % 256, crc >> 8 % 256])
data = b"\x00\x00\x00\xC8\x00\x00\x00\x00\x00\x00\x00\x00"
crc = crc16(data)
crc_str = " ".join("{:02x}".format(x) for x in crc)
print(crc_str)
Note
At this link you can find the CRC-16/MODBUS algorithm written in C#, Java and PHP, found on the open source Internet.
The developer is responsible for executing the code.