结果不希望在十六进制逻辑“和”与python中

时间:2017-11-09 16:19:23

标签: python hex long-integer

接下来是我正在做的程序的一部分,我需要在2个十六进制数字之间进行“AND”操作,在第一部分中一切正常,但在第二部分中我使用的是十六进制数字太长结果与我的预期不同:

#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

你知道发生了什么吗?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

结果 $request->input('users')十六进制,十进制为0x10000000。请参阅268435456

您不需要将十进制数转换为字符串并将其解析为整数。只是做:

hex(268435456)

你的第一个结果是错误的。结果是x = 268435456 y = x transition_x = x & 0xFF transition_y = y & 0xFFFFFF00 print transition_x # 0 print transition_y # 268435456 ,而不是0

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