使用python时,十六进制逻辑“and”中不应有结果

2024-06-16 10:09:08 发布

您现在位置:Python中文网/ 问答频道 /正文

下一个是我正在做的程序的一部分,我需要在两个十六进制数之间做一个“和”运算,在第一部分中一切正常,但在第二部分,当我使用一个十六进制数太长,结果与我预期的不同:

#this is ok
x = hex(268435456)       
transition = int(x, 16) & 0x000000FF 
>>>> print transition
>>>> 6

#this does not work
y = hex(268435456)
transition = int(y,16) & 0xFFFFFF00
>>>> print transition
>>>> 268435456
#in this case the result should be 10 00 00 00

你知道发生了什么事吗?在


Tags: thein程序isnotokthisint
2条回答

结果0x10000000十六进制,它是十进制的268435456。请参见hex(268435456)。在

您不需要将十进制数转换为字符串并将其解析回int。就这么做吧:

x = 268435456
y = x
transition_x = x & 0xFF
transition_y = y & 0xFFFFFF00
print transition_x # 0
print transition_y # 268435456

你的第一个结果是错误的。结果是0,而不是{}。在

如果您使用十进制符号(1234)、十六进制符号(0x4d2)或八进制符号(0o232202322[py2])定义一个整数,它将始终在内部存储为int。我上面使用的数字字面值都代表相同的十进制值1234。打印数字将始终使用十进制表示法,除非将其显式转换为特定的字符串表示形式。在

结果是10 00 00 00,您只是打印十进制表示而不是十六进制表示。在

>>> print '{:x}'.format(268435456)
10000000

相关问题 更多 >