获取整数的第n个字节

Jui*_*icy 6 python byte

我有以下整数:

target = 0xd386d209
print hex(target)
Run Code Online (Sandbox Code Playgroud)

如何打印此整数的第n个字节?例如,第一个字节的预期输出将是:

0x09
Run Code Online (Sandbox Code Playgroud)

Emi*_*röm 9

您可以借助位操作来完成此操作.为整个字节创建一个位掩码,然后使用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)


met*_*ter 0

这仅涉及一些简单的二进制运算。

>>> 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)