crc 迴圈冗餘校驗
阿新 • • 發佈:2021-11-22
CRC16 python實現
crc16_IBM
def crc16_IBM(data): # parameter data :'01 00 00 80 00 00 00 ..... 00 ce c2 b6 c8 33 38 32 35 a1 e6' if isinstance(data, str): data = data.strip().split(' ') crc = 0x0 for i in range(len(data)): crc = ((int(data[i], base=16) & 0xFF) ^ crc)for j in range(8): if (crc & 0x1) == 1: crc = (crc >> 1) ^ 0xa001 else: crc >>= 1 res = hex(crc)[2:] if len(res) < 4: res = (4 - len(res)) * '0' + res return [res[2:], res[:2]]
環境212資料報字串迴圈冗餘校驗
def crc16(text): """ 向伺服器傳送資料報字串的迴圈冗餘校驗 hj 212-2017 crc16效驗 :param text: 待效驗的字串 :return: result """ data = bytearray(text, encoding='utf-8') crc = 0xffff dxs = 0xa001 for i in range(len(data)): hibyte = crc >> 8 crc = hibyte ^ data[i]for j in range(8): sbit = crc & 0x0001 crc = crc >> 1 if sbit == 1: crc ^= dxs res = str(hex(crc)[2:]).upper() if len(res) < 4: res = (4 - len(res)) * '0' + res return res