def gray_to_bin(gray): """ Convert Gray code to binary, operating on the integer value directly. :returns: 32-bit String """ try: num = int(gray, 2) # Convert string to integer mask = num while mask != 0: mask >>= 1 num ^= mask return format(num, '032b') # Always return 32-bit string except ValueError as e: print(f"Error in gray_to_bin with input: '{gray}'") raise e def bin_to_gray(binary): """ Convert binary to Gray code using XOR with right shift :returns: 32-bit String """ try: num = int(binary, 2) # Convert string to integer gray = num ^ (num >> 1) # Gray code formula: G = B ^ (B >> 1) return format(gray, '032b') # Always return 32-bit string except ValueError as e: print(f"Error in bin_to_gray with input: '{binary}'") raise e def bin_to_param(binary, q_min = 0.0, q_max = 10.0): """ Convert one binary string to float parameter in range [q_min, q_max] :returns: float """ try: val = int(binary, 2) / 25.5 * 10 # conversion to 0.0 - 10.0 float # Scale to range [q_min, q_max] q = q_min + ((q_max - q_min) / (2**len(binary))) * val return q except ValueError as e: print(f"Error in bin_to_param with input: '{binary}'") raise e