我有以下整数:
target = 0xd386d209
print hex(target)
如何打印此整数的第n个字节?例如,第一个字节的预期输出为:
0x09
答案 0 :(得分:8)
您可以借助位操作来完成此操作。为整个字节创建一个位掩码,然后使用bitshift屏蔽你喜欢的字节数。使用二进制AND屏蔽字节,最后将结果位移回第一个位置:
target = 0xd386d209
n = 0 # 0th byte
goal = 0xFF << (8 * n)
print hex((target & goal) >> (8 * n))
您可以先通过移动输入数字来简化它。那么你根本不需要对goal
值进行位移:
target = 0xd386d209
n = 0 # 0th byte
goal = 0xFF
print hex((target >> (8 * n)) & goal)
答案 1 :(得分:1)
>>> def print_n_byte(target, n):
... return hex((target&(0xFF<<(8*n)))>>(8*n))
...
>>> print_n_byte(0xd386d209, 0)
'0x9L'
>>> print_n_byte(0xd386d209, 1)
'0xd2L'
>>> print_n_byte(0xd386d209, 2)
'0x86L'
答案 2 :(得分:0)
这只涉及一些简单的二进制操作。
>>> target = 0xd386d209
>>> b = 1
>>> hex((target & (0xff << b * 8)) >> b * 8)
'0x9'
>>> hex((target & (0xff << b * 8)) >> b * 8)
'0xd2'
答案 3 :(得分:0)
def byte(number, i):
return (number & (0xff << (i * 8))) >> (i * 8)