Бинарные операции Python - объедините биты старшего и младшего разрядов - PullRequest
0 голосов
/ 21 мая 2018

У меня есть два шестнадцатеричных значения (представленные в виде строк):

00000000fe000000 <- старшие 32-битные </p>

000000000001009f <- младшие 32-битные </p>

Их необходимо объединить в одно значение и в идеале - удобно обращаться к ним, например, к значению [0:15] (возвращая биты от 0 до 15, справа налево).

Каков наилучший способсделать это на Python?

1 Ответ

0 голосов
/ 21 мая 2018

С двумя целыми числами вы просто используете сдвиг битов и |:

high = 0x00000000fe000000
low = 0x000000000001009f

result = (high << 32) | low

Для любого другого входа я предлагаю сначала преобразовать их в int с и преобразовать результат обратно в любоеФорма, которую вы хотите.

Чтобы получить оригинальные фрагменты, используйте сдвиг битов в обратном порядке

high = result >> 32

и & с соответствующей маской:

low = result & 0xffffffff
...