2014-01-09 4 views
2

Я делаю просмотрщик рюкзака TF2 в Python, и у меня есть маркер инвентаря, который 32 без знака длинный. Первые 16 бит для меня несущественны. Обычный подход в C будет чем-то вродеЗадает переменную в Python

(a<<16)>>16 

для получения последних 16 бит. Но Python не является C, и это выше операции не будет работать. Как указать, что Python СЛЕДУЕТ использовать int32 для этой переменной?

ответ

4

Вы можете использовать побитовое И оператор (&):

>>> 0x12345678 & 0xffff 
22136 
>>> hex(_) 
'0x5678' 
+0

Ну, что вроде работает ... Не могли бы вы объяснить мне, почему – RomaValcer

+0

@RomaValcer, см [ 'побитовое операция - AND' википедия страница] (http://en.wikipedia.org/wiki/Bitwise_operation#AND) – falsetru

0

Вы можете использовать array

array.array('H', [10]) 

Создаст массив 1 беззнаковое короткое слово. ? (Несколько лет назад я написал драйвер HW в Python, сочетающий array и struct

Смежные вопросы