У меня есть bitstring.Bitarray и хочу читать с определенной позиции на другую позицию. У меня есть переменная длина int в цикле for, поэтому, например, у меня есть:

length = 2 и мой Bitarray выглядит примерно так:

msgstr = bitstring.BitArray(0b11110011001111110)

id = bitstring.BitArray()
m = 0
while 5 != m:
   /////////////
   Length changes in value part of Code
   /////////////
   x = 0
   if m == 0:
       while length != x:
           id.append = msgstr[x] #msgstr is the BitArray that needs to be read
           x = x + 1
   m = m + 1

Затем я хочу прочитать первые два бита и преобразовать их в int, чтобы у меня было: id == 3 И для следующего раунда, когда длина изменилась в значении, она должна начинаться с третьего бита и т. Д.

1
Oberon Meier 25 Апр 2017 в 08:35

2 ответа

Лучший ответ

Код внутри вашего цикла только делает что-либо, если m == 0, но затем вы увеличиваете m, так что m будет только 0 в первый раз в цикле. В остальное время вы проходите через цикл, кажется, что он на самом деле ничего не делает.

Кроме того, где вы говорите

id.append =  msgstr[x]

Вы, вероятно, на самом деле хотите

id.append(msgstr[x])

Также может показаться, что вам может пригодиться использование фрагмента Python.

1
Community 23 Май 2017 в 11:54

Я не совсем понимаю, какова ваша цель, но вы взглянули на https: //wiki.python. org / moin / BitManipulation?

0
mepi0011 25 Апр 2017 в 06:00