Ejemplo n.º 1
0
# a = hamming.decode_chunks(hamming.encode_chunks(ascii_bitstring))
# print book
# print ascii_bitstring
# print chunk_bitstring("".join(ascii_bitstring), 8)
# for c in chunk_bitstring("".join(ascii_bitstring), 8):
# print c, convert_binary_to_ascii(c)
# print "".join([convert_binary_to_ascii(x) for x in chunk_bitstring("".join(ascii_bitstring), 7)])
# sys.exit(0)

# Now use the hamming coder to send it with error correction and ascii

print "Sending ascii bitstring over channel"
channel.reset()
hamming_ascii = hamming.encode_chunks(ascii_bitstring)
hamming_corrupted_bitstring = channel.binary_symmetric_channel(hamming_ascii, perror=0.02)
print "Decoding ascii bitstring"
hamming_decoded_ascii = hamming.decode_chunks(hamming_corrupted_bitstring)
# print "TOTAL ERRORS DETECTED: ", hamming.errors
hamming_ascii_final = "".join([convert_binary_to_ascii(x) for x in chunk_bitstring("".join(hamming_decoded_ascii), 8)])
# print hamming_ascii_final

print "A. NUM CHARS IN DOC: ", len("".join(book))
print "B. BINARY CHARS IN DOC: ", len(ascii_bitstring)
print "C. NUM ERRORS FROM CHANNEL: ", channel.num_errors
print "D. NUM NO ERRORS FROM CHANNEL: ", channel.no_errors
print "E. NUM CODEWORDS 1 ERR: ", channel.one_errors
print "F. NUM CODEWORDS 2 ERR: ", channel.double_errors
print "G. MORE THAN 2 ERRORS: ", channel.more_than_double_errors
print "H. BIT ERRORS AFTER DECODE: ", count_string_differences("".join(hamming_decoded_ascii), ascii_bitstring)
print "I. CODEWORD ERRORS AFTER DECODE: ", sum(