【发布时间】:2019-07-07 03:20:27
【问题描述】:
除了二进制和十进制之外,我们还可以有任何基数的数字。我们使用的常见基数包括八进制、十六进制和 base64。
这是一个从 0 到 15 的数字表,除了 base64 之外的每个基数。
http://www.themathwebsite.com/TogglerNumbers/Octal.GIF
问题:编写一个函数 make_decimal_to_n_ary_converter,它接受一个数字 n,其中 1
def make_decimal_to_n_ary_converter(n):
# return a number converter that takes a decimal number
# and returns its string representation in base n
def converter(x):
if n == 2:
return bin(x)[2:]
elif n == 8:
return oct(x)[2:]
elif n == 16:
return hex(x)[2:].upper()
return converter
基本上,此代码仅适用于二进制、八进制和十六进制,但我需要在没有 python 内置函数的情况下以编程方式编写它以允许它从 n_ary 1-17 运行
以下是如何以编程方式编写二进制转换的示例:
def decimal_to_binary(n):
# return bin(n)[2:]
if n == 0:
return '0'
binary = ''
while n > 0:
binary += '0' if n % 2 == 0 else '1'
n = n//2
return binary[::-1]
【问题讨论】:
标签: python algorithm binary hex octal