为什么 int() 的基值限制在 36 到 2 之间
Why is the base value for int() limited to between 36 and 2
我发现当我 运行 在 python
中出现以下表达式时
int(33, base=100)
我收到以下错误:
ValueError: int() base must be >= 2 and <= 36, or 0
我找不到这个限制的任何解释; another Stack Overflow question about the same error message 没有提到为什么 base 参数被限制在这个范围内。
int
的 base
参数用于解析字符串,而不是在将 int 传递给 int
时使用:
>>> int('ff', 16)
255
使用 a、b、c、...、z 表示 10、11、12、...、35 的数字是一个公认的约定,但是对于数字使用什么符号没有约定36 以 37 为基数。
这是一个实用的实现约定。您认为以 100 为基数的字符集是什么? :-)
使用数字和整个字母表已经很常见了,因此 base
具有一组连续的可接受基值的函数实现了到目前为止的功能。基数 1 就是 len(arg).
base-64 编码也有约定;但是,由于没有对值 37-63 的约定,base
函数将 radix-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 0
不会改变。
我发现当我 运行 在 python
中出现以下表达式时int(33, base=100)
我收到以下错误:
ValueError: int() base must be >= 2 and <= 36, or 0
我找不到这个限制的任何解释; another Stack Overflow question about the same error message 没有提到为什么 base 参数被限制在这个范围内。
int
的 base
参数用于解析字符串,而不是在将 int 传递给 int
时使用:
>>> int('ff', 16)
255
使用 a、b、c、...、z 表示 10、11、12、...、35 的数字是一个公认的约定,但是对于数字使用什么符号没有约定36 以 37 为基数。
这是一个实用的实现约定。您认为以 100 为基数的字符集是什么? :-)
使用数字和整个字母表已经很常见了,因此 base
具有一组连续的可接受基值的函数实现了到目前为止的功能。基数 1 就是 len(arg).
base-64 编码也有约定;但是,由于没有对值 37-63 的约定,base
函数将 radix-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 0
不会改变。