อัลกอริธึมการแฮชของ Cyclic Redundance Check ที่ใช้ใน python
def crc16(data: str, poly: hex = 0xA001) -> str: ''' CRC-16 MODBUS HASHING ALGORITHM ''' crc = 0xFFFF for byte in data: crc ^= ord(byte) for _ in range(8): crc = ((crc >> 1) ^ poly if (crc & 0x0001) else crc >> 1) hv = hex(crc).upper()[2:] blueprint = '0000' return (blueprint if len(hv) == 0 else blueprint[:-len(hv)] + hv)
Usage
>> from crc import crc16 >> example_str = 'Cyclic redundat check 16 modbus alogirthm in python' >> crc16(example_str) '396E'