前回、以下のようなプログラムを作ったため、今回は16進数を10進数に変えるプログラムを作りました。
def change_decimal(hexa):
nums = {'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}
n = len(hexa)
sum = 0
for i in range(n):
num = nums[hexa[i].upper()] * (16**(n - 1))
sum += num
n -= 1
return sum
try:
hexa = input("16進数を入力してください(マイナス値が扱えません):")
result = change_decimal(hexa)
print(result)
except KeyError:
print('0~9の数字、A~Fの英字を半角で入力してください')
#Python標準機能の場合
print(int(hexa, 16))
出力結果は以下のようになります。ひとまずマイナス値を扱わないやり方としました。マイナス値にも対応できるようなプログラムも今後は考えてみたいと思います。
16進数を入力してください(マイナス値が扱えません):4f5
1269
ご意見いただけると非常に勉強になります。