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

2024-04-20 11:49:06 发布

您现在位置:Python中文网/ 问答频道 /正文

当我在python中运行下面的表达式时

int(33, base=100)

我得到以下错误:

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

我找不到关于这个限制的任何解释;another Stack Overflow question about the same error message没有提到为什么基参数被限制在这个范围内。你知道吗


Tags: orandthebasestack表达式错误another
3条回答

intbase参数用于解析字符串,而不是将int传递给int时:

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

用a,b,c,…,z来表示10,11,12,…,35的数字是一个公认的惯例,但用什么符号来表示以37为底的数字36却没有惯例。你知道吗

这是一个实际的执行公约。你认为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的基数;你不能仅仅用一个数字来计数,value of ^{}不会改变。你知道吗

相关问题 更多 >