Python—为什么'int(x,2)`只能用于字符串,而不能用于整数?
我有以下示例代码:Python—为什么'int(x,2)`只能用于字符串,而不能用于整数?,python,python-3.x,type-conversion,int,Python,Python 3.x,Type Conversion,Int,我有以下示例代码: test = 1011 test2 = int(test, 2) print(test2) 这将抛出一个错误 int() can't convert non-string with explicit base 当我将测试包装到str中时,代码可以工作,因为int转换需要一个字符串作为输入 我的问题是:为什么会这样,在接受int的同时,是否没有简单的方法在基上转换?我发现整数转换方法需要一个字符串作为输入,这与直觉相反。此函数仅适用于字符串,因为只有当您有数字的字符串表示时
test = 1011
test2 = int(test, 2)
print(test2)
这将抛出一个错误
int() can't convert non-string with explicit base
当我将测试包装到str中时,代码可以工作,因为int转换需要一个字符串作为输入
我的问题是:为什么会这样,在接受int的同时,是否没有简单的方法在基上转换?我发现整数转换方法需要一个字符串作为输入,这与直觉相反。此函数仅适用于字符串,因为只有当您有数字的字符串表示时,基数才相关
如果您有一个整数,则没有关联的基数,它是一个数字。然后,您可以将其表示为基数为2、16或10的字符串或任何其他您想要的字符串。此函数仅适用于字符串,因为只有当您具有数字的字符串表示形式时,基数才相关 如果您有一个整数,则没有关联的基数,它是一个数字。然后,您可以将其表示为以2、16或10为基数的字符串或任何其他您想要的字符串。因为将其应用于整数毫无意义 在您的示例中,测试是一个数字。它没有基础。所有数字都是这样的:二进制0x1011、十进制11和十六进制0x0B是完全相同的数字。这三种书写方式只是写同一件事的不同方式,就像用汉字写3一样,三, 是的。当然,在计算机内部,数字是用二进制表示的,例如0b1111110011,但可以用任何你喜欢的基数显示。基数仅在将数字转换为字符串或从字符串转换为数字时才相关 但是,如果您想使用二进制表示设置测试,您可以简单地编写:
test = 0b1011
因为将它应用于整数是没有意义的
在您的示例中,测试是一个数字。它没有基础。所有数字都是这样的:二进制0x1011、十进制11和十六进制0x0B是完全相同的数字。这三种书写方式只是写同一件事的不同方式,就像用汉字写3一样,三, 是的。当然,在计算机内部,数字是用二进制表示的,例如0b1111110011,但可以用任何你喜欢的基数显示。基数仅在将数字转换为字符串或从字符串转换为数字时才相关
但是,如果您想使用二进制表示设置测试,您可以简单地编写:
test = 0b1011
1011已经是数值壹仟壹佰壹。不是零一一。如果你写的是0o1763,同样的值用八进制表示法。这将导致一些奇怪的转换…1011已经是数值一千十一。不是零一一。如果你写的是0o1763,同样的值用八进制表示法。这将导致一些奇怪的转换…这是有道理的,如果我不传递输入的基数,转换将不知道从何处转换,我想它与str1101一起工作,因为它假设,当我不添加基数时,数字是十进制的?@flyingtunder:正确,因为十进制是最常见的格式,字符串到int的转换假定您使用的就是这个数字,除非您告诉它。这是有道理的,如果我不传递输入的基数,转换将不知道从哪里转换,我想它与str1101一起工作,因为它假定,当我不加基数时,数字是十进制的?@FlyingThunder:Correct,由于十进制是最常见的格式,字符串到整数的转换假定您使用的是十进制格式,除非您另有说明。