Python 为什么int()的基值限制在36到2之间

Python 为什么int()的基值限制在36到2之间,python,int,base,Python,Int,Base,我发现在python中运行以下表达式时 int(33, base=100) 我得到以下错误: ValueError: int() base must be >= 2 and <= 36, or 0 ValueError:int()base必须大于等于2,解析字符串时,而不是将int传递给int时,要使用int的base参数: >>> int('ff', 16) 255 对于表示10、11、12、…、35的数字,使用a、b、c、…、z是一个公认的惯例,但是对于基

我发现在python中运行以下表达式时

int(33, base=100)
我得到以下错误:

ValueError: int() base must be >= 2 and <= 36, or 0

ValueError:int()base必须大于等于2,解析字符串时,而不是将int传递给
int
时,要使用
int
base
参数:

>>> int('ff', 16)
255

对于表示10、11、12、…、35的数字,使用a、b、c、…、z是一个公认的惯例,但是对于基数37中的数字36,使用什么符号没有惯例。

在解析字符串时,而不是在将int传递给
int
时,使用
base
参数:

>>> int('ff', 16)
255

对于代表10、11、12、…、35的数字,使用a、b、c、…、z是一个公认的惯例,但对于基数37中的数字36,使用什么符号没有惯例。

这是一个实用的实现惯例。您认为base 100的角色集是什么?:-)

使用数字和整个字母表是很常见的,因此带有一组连续的可接受基值的
base
函数实现了迄今为止的功能。基数1只是len(arg)


对于base-64编码也有一个约定;但是,如果没有37-63值的约定,则
base
函数将基数-64值留给单独的接口。

这是一种实用的实现约定。您认为base 100的角色集是什么?:-)

使用数字和整个字母表是很常见的,因此带有一组连续的可接受基值的
base
函数实现了迄今为止的功能。基数1只是len(arg)


对于base-64编码也有一个约定;但是,由于没有37-63值的约定,
base
函数将基数-64值留给了一个单独的接口。

首先:在将字符串转换为数字时,只能为
int()
指定基数。假设您有一个十六进制数的字符串,以16为基数:

>>> int('2a', 16)
42
此结果与解释为不同基的同一字符串显著不同:

>>> int('2a', 11)
32
>>> int('2a', 29)
68
只有在直观地显示值或从字符串表示形式解析整数值时,才需要整数的基数。您可以以多种不同的方式显示整数值,但是
int
对象是该值,而不是一个可视化表示,并且没有基数,您也不能更改该基数

已经支持十六进制表示法(数字0-9和字母A-F)的逻辑扩展也支持使用字母G-Z,10位数字和26个字母可以使用基数36:

>>> int('zz', 36)
1295
进一步的基础将需要使用非字母数字符号,因为没有明确的预设顺序


基数不能低于2;您不能仅用一个数字进行计数,数字不会改变。

首先:在将字符串转换为数字时,您只能为
int()
指定基数。假设您有一个十六进制数的字符串,以16为基数:

>>> int('2a', 16)
42
此结果与解释为不同基的同一字符串显著不同:

>>> int('2a', 11)
32
>>> int('2a', 29)
68
只有在直观地显示值或从字符串表示形式解析整数值时,才需要整数的基数。您可以以多种不同的方式显示整数值,但是
int
对象是该值,而不是一个可视化表示,并且没有基数,您也不能更改该基数

已经支持十六进制表示法(数字0-9和字母A-F)的逻辑扩展也支持使用字母G-Z,10位数字和26个字母可以使用基数36:

>>> int('zz', 36)
1295
进一步的基础将需要使用非字母数字符号,因为没有明确的预设顺序


基数不能低于2;不能仅用一个数字进行计数,将不会更改。

base64编码约定(复数!)也与符号到数字的通常映射不兼容-例如,符号
'0'
不表示base64编码中的值0。对-这不会阻止
base
进行转换,但是,在一个表面上很小的参数变化上,这个功能将不会很顺利。@Prune我只是在试验它。从数学上讲,可以将其编码到这么高,我们正在用python检查这是否可行。当然。这当然是可能的,但是你需要有一个文本表示的约定。如果输入文本被限制在已经接受的36或64个字符内,则有一个明显的解释。但是,由于我们没有一个任意长集合中其他字符的约定,内置函数不支持这些基。如果您需要该功能,编写自己的代码是很容易的。base64编码约定(复数!)也与通常的符号到数字的映射不兼容-例如,符号
'0'
不代表base64编码中的值0。对-这不会阻止
base
进行转换,但是,在一个表面上很小的参数变化上,这个功能将不会很顺利。@Prune我只是在试验它。从数学上讲,可以将其编码到这么高,我们正在用python检查这是否可行。当然。这当然是可能的,但是你需要有一个文本表示的约定。如果输入文本被限制在已经接受的36或64个字符内,则有一个明显的解释。但是,由于我们没有一个任意长集合中其他字符的约定,内置函数不支持这些基。如果您需要该功能,编写自己的代码是很容易的。感谢您的解释,因为从数学上讲,可以对高值进行编码,我不明白为什么在python中它会受到限制。感谢您的解释,