В принципе:
Я пытаюсь преобразовать hex в десятичный с помощью словарей, но я не могу понять, как бы его преобразовать. Я попытался использовать цикл for для итерации по шестнадцатеричному значению, которое вводит пользователь, и для преобразования каждого из них путем умножения его на мощность 16 в зависимости от длины шестнадцатеричного кода. Например, если пользователь входит в F21, программа должна признать, что длина равна 3, поэтому следует начинать с умножения 15 (F) на 16 ^ 2 и добавить это к 2 * 16 ^ 1 и добавить это к 1 * 16 ^ 0. Но я сталкиваюсь с таким количеством ошибок
Шестнадцатеричный до десятичного словаря:
hex_to_decimal = {
"0":"0",
"1":"1",
"2":"2",
"3":"3",
"4":"4",
"5":"5",
"6":"6",
"7":"7",
"8":"8",
"9":"9",
"A":"10",
"B":"11",
"C":"12",
"D":"13",
"E":"14",
"F":"15"
}
Замечания:
Я не пытаюсь использовать это решение, поскольку я пытаюсь практиковать словари
s = "F21"
i = int(s, 16)
Поскольку вы конвертируете в десятичные числа, базу по умолчанию для целых чисел, вы должны сделать значения целых чисел hex_to_demical
а не строк, чтобы вы могли выполнять числовые операции для каждого переведенного шестнадцатеричного числа:
hex_to_decimal = {
"0": 0,
"1": 1,
"2": 2,
"3": 3,
"4": 4,
"5": 5,
"6": 6,
"7": 7,
"8": 8,
"9": 9,
"A": 10,
"B": 11,
"C": 12,
"D": 13,
"E": 14,
"F": 15
}
def convert(s):
i = 0
for h in s:
i = i *16 + hex_to_decimal[h]
return i
с вышеуказанным кодом,
convert('F21')
вернется:
3873
i = i *16 + int(hex_to_decimal[h])
int
если вы инициализируете ваш hex_to_decimal
целыми числами, а не строками.
Просто просмотрите индекс i
и цифру n
шестнадцатеричной строки, используя enumerate()
, и выполните вычисление n_dec*16**i
(например, с n_dec = 15
при n = F
). В частности, мы имеем n_dec = int(hex_to_decimal[n])
с требуемым значением int()
потому что вы храните значения вашего dict
как str
s. Наконец, sum
все:
s_hex = "F21"
s_dec = str(sum(
int(hex_to_decimal[n])*16**i for i, n in enumerate(reversed(s_hex))
))
reversed()
необходим, потому что первые (шестнадцатеричные) цифры относятся к более крупным значениям. str()
используется только для того, чтобы сохранить окончательный десятичный результат как str
, так же, как значения в вашем dict
.