获取整数的第n个字节

时间:2015-09-21 12:50:52

标签: python byte

我有以下整数:

target = 0xd386d209
print hex(target)

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

0x09

4 个答案:

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