diff options
Diffstat (limited to 'utilities/hammington2416.py')
-rw-r--r-- | utilities/hammington2416.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/utilities/hammington2416.py b/utilities/hammington2416.py new file mode 100644 index 0000000..46f76f7 --- /dev/null +++ b/utilities/hammington2416.py @@ -0,0 +1,31 @@ +#!/usr/bin/python + +import sys + +_hammingCalculateParityLowNibble = [0, 3, 5, 6, 6, 5, 3, 0, 7, 4, 2, 1, 1, 2, 4, 7] +_hammingCalculateParityHighNibble = [0, 9, 10, 3, 11, 2, 1, 8, 12, 5, 6, 15, 7, 14, 13, 4] + +def HammingCalculateParity128(byte): + return _hammingCalculateParityLowNibble[byte&0x0F] ^ _hammingCalculateParityHighNibble[byte >> 4] + +def HammingCalculateParity2416(first, second): + return HammingCalculateParity128(second) << 4 | HammingCalculateParity128(first) + +output = "" +bytepos = 0 +oldbyte = None + +# Read bytewise +f = open(sys.argv[1]) +for byte in f.read(): + output += byte + oldbyte = byte + bytepos += 1 + if bytepos == 2: + bytepos = 0 + output += str(HammingCalculateParity2416(ord(oldbyte), ord(byte))) +if bytepos == 1: + output += " " + output += str(HammingCalculateParity2416(ord(oldbyte), ord(" "))) + +print output
\ No newline at end of file |