Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python—为什么'int(x,2)`只能用于字符串,而不能用于整数?_Python_Python 3.x_Type Conversion_Int - Fatal编程技术网

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,由于十进制是最常见的格式,字符串到整数的转换假定您使用的是十进制格式,除非您另有说明。