def test_zeros_and_ones(self): for endian in 'little', 'big': for n in range(100): a = zeros(n, endian) s = serialize(a) self.assertEqual(s[1:], b'\0' * bits2bytes(n)) self.assertEQUAL(a, deserialize(s)) a.setall(1) self.assertEQUAL(a, deserialize(serialize(a)))
def encodeFile(inFile, outFile, dic): import bitarray # read file as characters characters = [] f = open(inFile, "r") for line in f: for character in line: characters.append(character) f.close() # characters -> encoded characters ( using tree ) encodedbits = "" for char in characters: encodedbits += dic[char] encodedbits = bitarray.bitarray(encodedbits) print(encodedbits) # bits -> bytes bytes = serialize(encodedbits) # save file f = open(outFile, 'wb') f.write(bytes) f.close()
def default(self, obj): if isinstance(obj, bitarray): if len(obj) > 50: return {'bitarray_b64': b64encode(serialize(obj)).decode()} else: return {'bitarray': obj.to01()} return json.JSONEncoder.default(self, obj)
def test_explicit(self): for a, b in [ (bitarray(0, 'little'), b'\x00'), (bitarray(0, 'big'), b'\x10'), (bitarray('1', 'little'), b'\x07\x01'), (bitarray('1', 'big'), b'\x17\x80'), (bitarray('11110000', 'little'), b'\x00\x0f'), (bitarray('11110000', 'big'), b'\x10\xf0'), ]: self.assertEqual(serialize(a), b) self.assertEQUAL(deserialize(b), a)
def test_random(self): for a in self.randombitarrays(): b = deserialize(serialize(a)) self.assertEQUAL(a, b) self.check_obj(b)
def default(self, obj): if isinstance(obj, bitarray): return {'bitarray': standard_b64encode(serialize(obj)).decode()} return json.JSONEncoder.default(self, obj)