Skip to content

Just some 'speriments! (Hamming Error Correction Codes (SECDED))

Notifications You must be signed in to change notification settings

mikeperalta1/hamming-tests

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 

Repository files navigation

hamming

Implementation of Hamming codes for detecting up to 2 errors and correcting up to 1 error in a data bitstring of arbitrary length. These are known as "SECDED" (Single Error Correction, Double Error Detection) codes and are extremely popular in computer memory for handling errors. For example, RAID-2 uses Hamming codes for its parity.

Files

hamming.py: The implementation. The two functions encode() and decode() form the main API; the rest are helper functions.

tests.py: A set of unit tests written while implementing hamming.py to verify its functionality.

Users only need import the encode and decode functions from the hamming module to make full use of it. The code has been verified to pass all 50+ unit tests in tests.py for Python 3.5+.

A brief example:

>>> from hamming import encode, decode
>>> from bitarray import bitarray
>>> data = bitarray('101010')
>>> data_with_parity = encode(data)
>>> data_with_parity[3] = not data_with_parity # data now has a single bit in error..
>>> decode(data_with_parity)                   # but Hamming codes can correct it!
bitarray('101010')

About

Just some 'speriments! (Hamming Error Correction Codes (SECDED))

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%