From 6e41844bfa547a69a2fbd8effb09aae15b203bff Mon Sep 17 00:00:00 2001 From: Sebastian Muszytowski Date: Fri, 22 Jan 2016 18:50:04 +0100 Subject: add hammington2416 utility for testing --- utilities/hammington2416.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 utilities/hammington2416.py 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 -- cgit v1.2.3