Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!

Library for calculating CRC8/CRC16/CRC32/CRC64

Project Description

libscrc is a library for calculating CRC4 CRC5 CRC6 CRC7 CRC8 CRC16 CRC32 CRC64.

CRCx CRC8 CRC16 CRC32 CRC64
CRC4-ITU Intel Modbus FSC ISO
CRC5-ITU BCC IBM CRC32 ECMA182
CRC5-EPC LRC XModem MPEG2  
CRC5-USB MAXIM8 CCITT    
CRC6-ITU ROHC Kermit    
CRC7-MMC ITU8 Sick    
  CRC8 DNP    
    X25    
    USB    
    MAXIM16    
    DECT    

Installation

  • Compile and install the library:

    pip3 install libscrc
    

    or:

    python setup.py build
    python setup.py install
    

    You will need the administrative privileges to execute the last command.

  • After installation you can run unit tests to make sure that the library works fine. Execute:

    python -m libscrc.testmodbus
    python -m libscrc.testcrc64
    

Usage

In Python 3:

import libscrc
crc16 = libscrc.modbus(b'1234')  # Calculate ASCII of modbus
crc16 = libscrc.modbus(b'\x01\x02')  # Calculate HEX of modbus

You can also calculate CRC gradually:

import libscrc
crc16 = libscrc.xmodem(b'1234')
crc16 = libscrc.xmodem(b'5678', crc16)

Example

  • CRCx:

    crc4 = libscrc.itu4(b'1234')
    crc5 = libscrc.itu5(b'1234')
    crc5 = libscrc.epc(b'1234')
    crc5 = libscrc.usb5(b'1234')
    crc6 = libscrc.itu6(b'1234')
    crc7 = libscrc.mmc(b'1234')
    
  • CRC8:

    crc8 = libscrc.intel(b'1234')
    crc8 = libscrc.bcc(b'1234')
    crc8 = libscrc.lrc(b'1234')
    crc8 = libscrc.maxim8(b'1234')
    crc8 = libscrc.rohc(b'1234')
    crc8 = libscrc.itu8(b'1234')
    crc8 = libscrc.crc8(b'1234')
    
  • CRC16:

    crc16 = libscrc.ibm(b'1234')            # poly=0xA001 (default Reversed)
    crc16 = libscrc.ibm(b'1234', 0x8005)    # poly=0x8005 (Normal)
    crc16 = libscrc.modbus(b'1234')
    crc16 = libscrc.xmodem(b'1234')
    crc16 = libscrc.ccitt(b'1234')
    crc16 = libscrc.ccitt_false(b'1234')
    crc16 = libscrc.kermit(b'1234')
    crc16 = libscrc.sick(b'1234')
    crc16 = libscrc.dnp(b'1234')
    crc16 = libscrc.x25(b'1234')
    crc16 = libscrc.usb16(b'1234')
    crc16 = libscrc.maxim16(b'1234')
    crc16 = libscrc.dect(b'1234')           # poly=0x0589 (Cordless Telephones)
    
  • CRC32:

    crc32 = libscrc.fsc(b'1234')            # Ethernet frame sequence (FSC)
    crc32 = libscrc.mpeg2(b'1234')          # MPEG2
    crc32 = libscrc.crc32(b'1234')          # WinRAR, File
    
  • CRC64:

    crc64 = libscrc.iso(b'1234')
    crc64 = libscrc.ecma182(b'1234')
    

V0.1.5 (2017-09-22)

  • New CRC4-ITU Poly = 0x03 Initial = 0x00 Xorout=0x00 Refin=True Refout=True
  • New CRC5-ITU Poly = 0x15 Initial = 0x00 Xorout=0x00 Refin=True Refout=True
  • New CRC5-EPC Poly = 0x09 Initial = 0x09 Xorout=0x00 Refin=False Refout=False
  • New CRC5-USB Poly = 0x05 Initial = 0x1F Xorout=0x1F Refin=True Refout=True
  • New CRC6-ITU Poly = 0x03 Initial = 0x00 Xorout=0x00 Refin=True Refout=True
  • New CRC7-MMC Poly = 0x09 Initial = 0x00 Xorout=0x00 Refin=False Refout=False

V0.1.4 (2017-09-21)

  • New CRC8-MAXIM8 Poly = 0x31 Initial = 0x00 Xorout=0x00 Refin=True Refout=True
  • New CRC8-ROHC Poly = 0x07 Initial = 0xFF Xorout=0x00 Refin=True Refout=True
  • New CRC8-ITU Poly = 0x07 Initial = 0x00 Xorout=0x55 Refin=False Refout=False
  • New CRC8-CRC8 Poly = 0x07 Initial = 0x00 Xorout=0x00 Refin=False Refout=False

V0.1.3 (2017-09-19)

  • New CRC16-X25
  • New CRC16-USB
  • New CRC16-MAXIM16
  • New CRC16-CCITT_FALSE
  • New CRC16-DECT
Bugfixes
  • Calculate CRC16-IBM of poly = 0x8005 is ERROR.

V0.1.2 (2017-08-22)

Platform Support
  • Win32
  • Linux_x86_64
  • MacOSX_10_6_intel
  • ARMv7 (Toradex Ixora iMX6 Linux-4.1.41)
Bugfixes
  • Coding C99 standard.
  • Python/C API parsing arguments type error in linux.

V0.1.1 (2017-08-20)

  • New CRC16-NDP and CRC16-SICK
Release History

Release History

This version
History Node

0.1.5

History Node

0.1.2

History Node

0.1.1

History Node

0.1.0

History Node

0.0.7

Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
libscrc-0.1.5-cp27-cp27m-linux_armv7l.whl (89.7 kB) Copy SHA256 Checksum SHA256 cp27 Wheel Sep 22, 2017
libscrc-0.1.5-cp35-cp35m-linux_armv7l.whl (94.1 kB) Copy SHA256 Checksum SHA256 cp35 Wheel Sep 22, 2017
libscrc-0.1.5-cp35-cp35m-manylinux1_x86_64.whl (71.6 kB) Copy SHA256 Checksum SHA256 cp35 Wheel Sep 22, 2017
libscrc-0.1.5-cp35-cp35m-win32.whl (36.0 kB) Copy SHA256 Checksum SHA256 cp35 Wheel Sep 22, 2017
libscrc-0.1.5-cp36-cp36m-linux_armv7l.whl (95.6 kB) Copy SHA256 Checksum SHA256 cp36 Wheel Sep 30, 2017
libscrc-0.1.5-cp36-cp36m-win32.whl (36.0 kB) Copy SHA256 Checksum SHA256 cp36 Wheel Sep 22, 2017

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting