Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def hamming_decode_remove_first_bit(encoded_str):
- # Remove the first bit
- encoded_str = encoded_str[1:]
- # Convert the string to a list of integers
- encoded = list(map(int, list(encoded_str)))
- # Calculate parity bits positions (1-based index)
- parity_positions = [1, 2, 4, 8, 16]
- # Calculate error position (1-based index)
- error_position = 0
- for p in parity_positions:
- count = 0
- for i in range(1, len(encoded) + 1):
- if i & p == p:
- count += encoded[i - 1]
- if count % 2 != 0:
- error_position += p
- # If there's an error, correct it
- if error_position != 0:
- encoded[error_position - 1] ^= 1
- # Remove the parity bits to extract the data bits
- data_bits = []
- for i in range(1, len(encoded) + 1):
- if i not in parity_positions:
- data_bits.append(str(encoded[i - 1]))
- # Convert the binary data bits to a decimal integer
- data_bits_str = ''.join(data_bits)
- return int(data_bits_str, 2)
- # The encoded string with the intention to remove the first bit
- encoded_str = '01001000000100001001110000011000'
- decoded_value = hamming_decode_remove_first_bit(encoded_str)
- decoded_value
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement