python - 如何在python中手动将十六进制转换为十进制?
问题描述
这是我第一次使用这个 QnA 网站......我在课堂上有一个任务,要求我使用方法将数字从任何基础转换为十进制......我对转换十六进制数字中包含的字母感到非常困惑。这是我输入的程序:
def base_n_to_dec(num_string, base):
dec = 0
index = len(num_string) - 1
for digit in num_string:
dec += int(digit) * (base ** index)
index -= 1
return dec
谁能帮我修改这个程序,以便它可以识别十六进制数字中包含的字母,从而可以将字符转换为十进制?请不要使用内置函数,因为这是不允许的。(我已经提交了任务,所以我不是说要别人完成我的任务)抱歉英语不好......
解决方案
alphabet = '0123456789ABCDEF'
def base_n_to_dec(num_string, base):
'''
:param num_string: string containing number in base10
:param base: integer between 2 and 16
:returns: num_string based base as a string
'''
b10_num = 0
for digit in num_string:
b10_num *= 10
b10_num += alphabet.index(digit)
if b10_num == 0:
return '0'
result = ''
while b10_num > 0:
result = alphabet[b10_num % base] + result
b10_num /= base
return result
推荐阅读
- python - (FLASK) 我不知道为什么我的 html 文件没有更新/呈现
- sql - 将表格转换为 XML
- string - 将文件的字符串长度与文件的整数匹配
- deep-linking - 使用同一域配置托管和深度链接 - Branch.io
- php - 在 10 月 CMS 中从事件插件 php 渲染部分内容
- apache-kafka - 仅允许来自某些主机/IP 的消费者访问 kafka 主题
- r - library(tidyverse) 提供以前从未见过的错误消息
- android - 菜单在中心而不是被触摸的地方弹出
- c++ - 当我尝试添加 zext 和调用指令时,LLVM Pass 崩溃
- flutter - ListView Builder 在初始化器中只能访问静态成员