打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
python crc8的实现

__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()

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
CRC32(c语言 源码)
探究CRC32算法实现原理-why table-driven implemention
DL/T 698.42-2010 电能信息采集与管理系统 第4-2部分 通信协议-集中器下行通信
网络封包的crc32
Java接收端 CRC16校验
循环冗余校验码CRC算法的C++实现
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服