Как я представляю и работаю с n-bit векторами в Python?

В присвоении я в настоящее время продолжаю работать, мы должны работать с битовый векторами, но я очень не уверен в том, как сделать это в Python. Они должны смочь быть от 4 битов до 20 битов. Я никогда не работал с битовый вектором прежде, но я предполагаю, что каждый был бы каждый создавать массивы неподписанных байтов, что Вы управляли использованием обычных операций AND/OR/XOR.

Важное ограничение здесь: Я не могу полагаться ни на какие библиотеки кроме предоставленных стандартным Python.

Я думаю, что знаю, как я сделал бы это в C использование массивов неподписанных байтов на 8 битов: например, поворачивать 18-й бит обнуленного массива в тот, я сделал бы что-то как my_bit_array[3] и = 1 <<2

Но так как Python с динамическим контролем типов и не имеет встроенного типа массива, как я пошел бы о выполнении этого pythonic способом?

И действительно ли это возможно (как?) для выражения небольшого вектора размера 20? Я думаю о, возможно, создании вектора на 24 бита / 3 байта и игнорировании 4 битов.

7
задан oligofren 27 January 2010 в 15:23
поделиться

4 ответа

Библиотека BitVector для этих целей является чисто питоновской библиотекой и должна соответствовать указанным вами потребностям.

7
ответ дан 6 December 2019 в 04:55
поделиться

У него есть списки, которые вы можете заполнить с лолями:

[False] * 20
6
ответ дан 6 December 2019 в 04:55
поделиться

использование модуль .

2
ответ дан 6 December 2019 в 04:55
поделиться

Библиотека BitVector является для этой цели чистой библиотекой Python и должна соответствовать указанным вами потребностям.

-121--3762462-

При использовании Python 2,5 может потребоваться импорт simplejson :

try:
    import json
except ImportError:
    import simplejson as json
-121--1173079-

Модуль bitarray эффективно выполняет эту операцию с логическими значениями.

9
ответ дан 6 December 2019 в 04:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: