Python 允许通过以下方式轻松地从给定基数的字符串创建整数
int(str, base).
我想要执行逆操作:从整数创建一个字符串,即我想要一些函数int2base(num, base),例如:
int2base(num, base)
int(int2base(x, b), b) == x
函数名称/参数顺序并不重要。
对于任何数字x和基数b都int()可以接受。
x
b
int()
这是一个很容易编写的函数:实际上,它比在这个问题中描述它更容易。但是,我觉得我一定遗漏了一些东西。
我知道这些功能bin,,,但由于以下几个原因,我无法使用它们oct:hex
bin
oct
hex
您可以创建一个函数,使用基本算术和字符串运算将整数转换为任意给定进制的字符串表示形式。以下是适用于 2 到 36(含)之间的任何进制的通用解决方案:
def int2base(num, base): if base < 2 or base > 36: raise ValueError("Base must be between 2 and 36, inclusive.") # Handle the special case of zero if num == 0: return "0" digits = "0123456789abcdefghijklmnopqrstuvwxyz" result = "" sign = "" # Handle negative numbers for base 10 if num < 0 and base == 10: sign = "-" num = -num while num > 0: result = digits[num % base] + result num = num // base return sign + result # Example usage: x = 255 b = 16 base_string = int2base(x, b) print(base_string) # Should print "ff" print(int(base_string, b)) # Should print 255, confirming the round trip
ValueError
"0"
sign
num % base
此函数确保与旧版本的 Python 兼容,并允许使用标准二进制、八进制和十六进制以外的进制。