电竞比分网-中国电竞赛事及体育赛事平台

分享

python crc8的實現(xiàn)

 sun317 2013-01-16

__author__ = 'Administrator'

from binascii import unhexlify

DI = 0x07
crc8_table = []

#Should be called before any other crc function
def init_crc8():
    for i in range(256):
        crc = i
        for j in range(8):
            tmp = crc & 0x80
            if tmp:
                crc = (crc << 1)^DI
            else:
                crc = (crc << 1)^0
        crc8_table.append(crc & 0xFF)
    #for k in crc8_table:
    #    print(k)

# For a byte array whose accumulated crc value is stored in *crc, computes
# resultant crc obtained by appending m to the byte array
def crc8(buf, n):
    crc_r = 0
    if not(len(crc8_table)):
        init_crc8()

    for i in range(n):
        crc_r = crc8_table[crc_r ^ buf[i]]
        crc_r &= 0xFF
    crc = hex(~crc_r & 0xff)
    return crc

#測試crc8程序
def TestCrc8():
    data = "A5 D1 08 01 00 04 08 03 01 23 23 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
    data = data.replace(" ","")
    SendData = unhexlify(bytes(data,"UTF-8"))
    crc = crc8(SendData, len(SendData))
    data += crc[2:] + "5A"
    SendData = unhexlify(bytes(data,"UTF-8"))
    print(SendData)

if __name__ == "__main__":
    TestCrc8()

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多