|
@@ -1,8 +1,5 @@
|
|
|
-
|
|
|
|
|
SINGLE_BIT_MASK = [1 << x for x in range(7, -1, -1)]
|
|
SINGLE_BIT_MASK = [1 << x for x in range(7, -1, -1)]
|
|
|
|
|
|
|
|
-]
|
|
|
|
|
-
|
|
|
|
|
class BitString(object):
|
|
class BitString(object):
|
|
|
|
|
|
|
|
def __init__(self, bytes, length=None, offset=None):
|
|
def __init__(self, bytes, length=None, offset=None):
|
|
@@ -10,7 +7,6 @@ class BitString(object):
|
|
|
self.offset = offset if offset is not None else 0
|
|
self.offset = offset if offset is not None else 0
|
|
|
self.length = length if length is not None else 8 * len(data) - self.offset
|
|
self.length = length if length is not None else 8 * len(data) - self.offset
|
|
|
|
|
|
|
|
-
|
|
|
|
|
def __getitem__(self, key):
|
|
def __getitem__(self, key):
|
|
|
try:
|
|
try:
|
|
|
start = key.start
|
|
start = key.start
|
|
@@ -18,5 +14,6 @@ class BitString(object):
|
|
|
except AttributeError:
|
|
except AttributeError:
|
|
|
if key < 0 or key >= length:
|
|
if key < 0 or key >= length:
|
|
|
raise IndexError()
|
|
raise IndexError()
|
|
|
- byte_index, bit_offset = divmod(self.offset + key), 8)
|
|
|
|
|
- return self.bytes[byte_index] & SINGLE_BIT_MASK[bit_offset]
|
|
|
|
|
|
|
+ byte_index, bit_offset = (divmod(self.offset + key), 8)
|
|
|
|
|
+ return self.bytes[byte_index] & SINGLE_BIT_MASK[bit_offset]
|
|
|
|
|
+
|