Реализовать функцию для транскодирования данных, содержащих битовые поля
Реализовать функцию для транскодирования данных, содержащих битовые поля. В решении необходимо использовать побитовые операции. Неиспользуемые поля результата должны содержать нулевые биты.
Входные данные: Шестнадцатиричная строка.
Выходные данные: Десятичная строка.
Тесты должны получится такими:
main('0x9c7421314') = '40975081498'
main('0xa47c30bdf') = '25498361886'
main('0x10e55f488') = '44091072530'
main('0xcdaf1fffb') = '68684267543'
У меня получается совершенно другой ответ, не могу найти где ошибка, вот код:
def main(hex_data):
# преобразуем шестнадцатиричные данные в двоичные
bin_data = bin(int(hex_data, 16))[2:].zfill(len(hex_data) * 4)
# разбиваем двоичное представление на отдельные битовые поля
k1 = bin_data[23:26]
k2 = bin_data[27:35]
k4 = bin_data[0:4]
k5 = bin_data[13:17] + bin_data[18:22]
# преобразуем битовые поля в десятичные и объединяем их в одну строку
result = int(k4, 2) + int(k5, 2) * 10000 + int(k1, 2) * 100000000 + int(k2, 2) * 10000000000
return str(result)
print(main('0x9c7421314'))
Источник: Stack Overflow на русском