1. 程式人生 > 其它 >crc 迴圈冗餘校驗

crc 迴圈冗餘校驗

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