Skip to content

Commit 0248040

Browse files
committed
Implement deser_dyn_bitset and ser_dyn_bitset in mininode.py
1 parent b0850fa commit 0248040

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

qa/rpc-tests/test_framework/mininode.py

+28
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,34 @@ def ser_int_vector(l):
201201
r += struct.pack("<i", i)
202202
return r
203203

204+
205+
def deser_dyn_bitset(f, bytes_based):
206+
if bytes_based:
207+
nb = deser_compact_size(f)
208+
n = nb * 8
209+
else:
210+
n = deser_compact_size(f)
211+
nb = int((n + 7) / 8)
212+
b = f.read(nb)
213+
r = []
214+
for i in range(n):
215+
r.append((b[int(i / 8)] & (1 << (i % 8))) != 0)
216+
return r
217+
218+
219+
def ser_dyn_bitset(l, bytes_based):
220+
n = len(l)
221+
nb = int((n + 7) / 8)
222+
r = [0] * nb
223+
for i in range(n):
224+
r[int(i / 8)] |= (1 if l[i] else 0) << (i % 8)
225+
if bytes_based:
226+
r = ser_compact_size(nb) + bytes(r)
227+
else:
228+
r = ser_compact_size(n) + bytes(r)
229+
return r
230+
231+
204232
# Deserialize from a hex string representation (eg from RPC)
205233
def FromHex(obj, hex_string):
206234
obj.deserialize(BytesIO(hex_str_to_bytes(hex_string)))

0 commit comments

Comments
 (0)