检查整数的进制表示

2 投票
7 回答
2358 浏览
提问于 2025-04-16 07:17

我这样定义了一个整数:

x = 0xFF

但是当我向解释器询问它的值时,我得到的是:

255

有没有办法强制解释器以我定义的方式返回这个值?有没有办法检查一个整数的进制表示?

7 个回答

2

0x是十六进制的表示方式。

如果想让解释器显示原始的数值,可以使用以下代码:

hex(x)

>>> x = 0xFFF
>>> x
4095
>>> hex(x)
'0xfff'
>>> 
4

不。 无论是Python还是我知道的其他语言,都不会保存你写整数时使用的进制。比如说,0xFF255 是没有区别的。这两个值在计算机内部都是以相同的方式表示的:二进制。

  • 如果你想记住一个进制,那你需要用不同的类型来存储,而不是用 int。你可以把整数以字符串的形式存储,比如 "0xFF",或者用元组的形式 (0xFF, 16)。因为 int 本身并不包含你想要的信息。

  • 更现实一点,你需要自己负责把输出格式化成你想要的样子。如果你把一个十六进制的数字传给一个函数,然后得到一个结果,格式化这个结果成十六进制也是你的责任。我不会指望这段代码能“按你想要的那样工作”:

    print foobar(10)
    print foobar(0xFF)
    

    要明确你的意图。如果默认的格式(十进制)不符合你的要求,那就覆盖它:

    print '%04d' % (foobar(10)))
    print '%04x' % (foobar(0xff)))
    
1

无论如何,数值在计算机里都是用二进制表示的。
Python 不会记得你最开始是怎么写这个数值的,当你把它赋值给一个变量的时候。
如果你想保存这些信息,可以创建一个专门的类来帮你存储这些信息,并正确显示数值。需要注意的是,当你赋值的时候,你必须明确指定数值的进制。

撰写回答