首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么int("0xff",16)计算,而int("hello",16)不计算呢?

为什么int("0xff",16)计算,而int("hello",16)不计算呢?
EN

Stack Overflow用户
提问于 2019-09-14 06:26:57
回答 1查看 75关注 0票数 1

如果这是一个愚蠢的问题,请原谅我。我目前正处于通过Skillsoft课程学习Python的初级阶段。讲师使用的一个例子是:int("0xff",16),它计算并打印255。

我只是感到困惑,因为,虽然我理解0xff是“具有255整数值的十六进制数字FF”(感谢Google),但我不明白为什么"0xff“由于引号而不被认为是字符串。当我尝试int("hello",16)时,我遇到了这样的问题:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "<pyshell#25>", line 1, in <module>
    int("hello", 16)
ValueError: invalid literal for int() with base 16: 'hello'

当"0xff“和”int("hello",16)“都是字符串时,int("0xff",16)如何计算而不是int("hello",16)

EN

Stack Overflow用户

回答已采纳

发布于 2019-09-14 06:29:12

因为"0xff"是一个表示十六进制数(基代码)的字符串,并且十六进制数的数字范围是从09以及从af,所以"hello""h""l"D916>,它们都不是有效的十六进制数字。

"0xff"中的"0x"只是用来指定这是一个十六进制字符串,实际的数字只是"ff" (int("ff", 16) ==> 255)。

要了解允许使用字符串的原因,请考虑17-base number系统(0-9a-g)中的一个数字,如何将int与此系统中的"gg"这样的数字一起使用,int("gg", 17)

您可以将int"hello"一起使用,但只能使用大于或等于25 (因为10 + ord(max("hello")) - 97 + 1 == 25),int("hello", 25) ==> 6873049的基数。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57930970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档