Skip to content

Commit 633414b

Browse files
committed
Check capacity based on encoded value (SignedDecimal fields)
1 parent f92a14c commit 633414b

File tree

1 file changed

+4
-11
lines changed

1 file changed

+4
-11
lines changed

bits_coder/fields.py

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,6 @@ def nbits(self, nbits):
100100
self.check_capacity(self.enc_value, nbits, self.value)
101101
self._nbits = nbits
102102

103-
@property
104-
def enc_value_repr(self):
105-
"""Bit representation of field value"""
106-
return '0b{self.enc_value:0{self.nbits}b}'
107-
108103

109104
class SignedDecimal(Field):
110105
"""Abstract field for Decimals"""
@@ -114,11 +109,9 @@ def __init__(self, nbits, name=None, value=None):
114109

115110
@classmethod
116111
def check_capacity(cls, enc_value, nbits, value):
117-
_check_value = value
118-
if _check_value < 0:
119-
_check_value = abs(_check_value) - 1
120-
if (_check_value > (2 ** nbits) / 2 - 1) or _check_value < 0:
112+
if enc_value > 2 ** nbits - 1:
121113
raise OverflowError(bit_overfl_exc_txt.format(value, nbits))
114+
return True
122115

123116

124117
class Bool(Field):
@@ -181,10 +174,10 @@ def __init__(self, nbits, name=None, value=None):
181174
super().__init__(nbits, name, value)
182175

183176
def encode(self):
184-
self.check_capacity(None, self.nbits, self.value)
185177
enc_value = self.value
186178
if enc_value < 0:
187179
enc_value += 2 ** self.nbits
180+
self.check_capacity(enc_value, self.nbits, self.value)
188181
self.enc_value = enc_value
189182

190183
def decode(self, value):
@@ -222,10 +215,10 @@ def __init__(self, nbits, frac, name=None, value=None):
222215
super().__init__(nbits, name, value)
223216

224217
def encode(self):
225-
self.check_capacity(None, self.nbits, self.value)
226218
enc_value = int(round(self.value * (10 ** self.frac), 0))
227219
if enc_value < 0:
228220
enc_value += 2 ** self.nbits
221+
self.check_capacity(enc_value, self.nbits, self.value)
229222
self.enc_value = enc_value
230223

231224
def decode(self, value):

0 commit comments

Comments
 (0)