File tree 1 file changed +28
-0
lines changed
qa/rpc-tests/test_framework
1 file changed +28
-0
lines changed Original file line number Diff line number Diff line change @@ -201,6 +201,34 @@ def ser_int_vector(l):
201
201
r += struct .pack ("<i" , i )
202
202
return r
203
203
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
+
204
232
# Deserialize from a hex string representation (eg from RPC)
205
233
def FromHex (obj , hex_string ):
206
234
obj .deserialize (BytesIO (hex_str_to_bytes (hex_string )))
You can’t perform that action at this time.
0 commit comments