Сдвиг шестнадцатеричного значения влево и самый значимый бит должен исчезнуть (или потеряться) с помощью Python - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть шестнадцатеричные значения (8-битная длина), которые я хочу сместить влево, и старший значащий бит должен исчезнуть. Но я не нашел простого способа сделать это.

Вот несколько примеров.

h = hex(0xFF << 1)
print h

Output_1: 0x1fe

h = hex(0xFF << 2)
print h

Output_2: 0x3fc

h = hex(0xFF << 3)
print h

Выход_3: 0x7f8

Однако я ожидаю, что MSB должен исчезнуть, а шестнадцатеричное значение останется в 8-битной длине. Ожидаемый результат должен быть таким:

Выход_1: 0xfe

Выход_2: 0xfc

Выход_3: 0xf8

Может кто-нибудь пожалуйста помочь мне в этом?

1 Ответ

0 голосов
/ 29 апреля 2020

К сожалению, я не получил ответа на свой вопрос. Однако, как новичок, я придумал следующий код:

h = '0xFF'
count = 0
for i in range(0, 8, 1):
    y = int(h, 16)
    count = count + (2**i)
    y = 255 - count             ## 255 is decimal value of 0xFF
    print hex(y)

Вывод:

0xfe

0xf c

0xf8

0xf0

0xe0

0xc0

0x80

0x0

Это вывод, который я искал.

...