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