>>> оператор в питоне - PullRequest
       2

>>> оператор в питоне

0 голосов
/ 18 апреля 2011

ActionScript и JavaScript поддерживают оператор «>>>».Я конвертирую ActionScript кодирования / декодирования base64 с использованием Python.Я знаю, Base64 доступен, и это для целей обучения.Python не имеет оператора "...". скрипт действия base64

в функции декодирования у вас есть две строки

  1. o1 = биты >>> 16 & 0xff;
  2. o2 = биты>>> 8 & 0xff;

Как мне преобразовать эти строки в python?

Ответы [ 2 ]

3 голосов
/ 18 апреля 2011

IINM, >>> - сдвиг вправо, который сохраняет значение самого левого бита.Это приводит к тому, что знак числа остается неизменным (т. Е. Отрицательные числа вставляются как 1 в качестве их MSB вместо 0).

В Python целые числа могут быть сколь угодно большими.Не существует осмысленной концепции старшего значащего бита, поскольку количество битов не ограничено.Поэтому сдвиг вправо просто сдвигает все биты вправо и сохраняет знак.Итак, в Python вы можете просто использовать >>.

Edit:

Как указывал @Sven Marnach, операция >>> полностью противоположна тому, что я думал вJavascript.Таким образом, >>> не сохраняет знак, в то время как >>, кажется, делает это.Другим интересным фактом является то, что -1>>1, по-видимому, -1, а не 0 в Javascript.Излишне говорить, что мои знания Javascript действительно ограничены, и я не уверен, каков точный эквивалент этих операторов в Python.

Одним из вариантов может быть явное ограничение количества используемых битов (возможно, с помощью ctypes.c_int), а затем установка самого левого бита вручную, как требуется в пользовательской функции сдвига вправо.

0 голосов
/ 18 апреля 2011
import ctypes
#convert signed to unsigned
bits = ctypes.c_uint32(bits).value

o1 = bits >> 16 & 0xff
o2 = bits >> 8 & 0xff
...