def decode(self, data, verbose=False): """ Найти 2 единицы, убрать последнюю развернуть последовательность, получить цифру data - binary """ bits, decoded = [], [] br = BitStreamReader(data) while not br.finished(): bit = br.get() if bit and bits and bits[-1]: if verbose: bits.append(bit) if verbose: print ''.join(str(int(b)) for b in bits) bits = bits[:-1] number = 0 for i,b in enumerate(bits): self.fibonacci_to_index(i) number += b * self.fib_series[i] if verbose: print number decoded.append(number) bits = [] else: bits.append(bit) return map(int,decoded)
def decode(self, data, verbose=False): """ Найти 2 единицы, убрать последнюю развернуть последовательность, получить цифру data - binary """ bits, decoded = [], [] br = BitStreamReader(data) while not br.finished(): bit = br.get() if bit and bits and bits[-1]: if verbose: bits.append(bit) if verbose: print ''.join(str(b) for b in bits) bits = bits[:-1] number = 0 for i,b in enumerate(bits): number += b * self.fib_series[i] if verbose: print number decoded.append(number) bits = [] else: bits.append(bit) return decoded
def decode(self, data, verbose=False): """ Return decoded sequence """ decoded = [] if verbose: print coded, j, k, control = [0] * self.n_data, 0, 0, 0 br = BitStreamReader(data) while not br.finished(): bit = br.get() if j < self.n_ctrl: control |= bit << ((self.n_ctrl - 1) - j) j += 1 else: coded[k] = bit k += 1 if k >= self.n_data: n_bits = self.counts[::-1][control] - 1 if verbose: print "".join([str(b) for b in self.bits(control)[-self.n_ctrl :]]), " ", print "".join([str(c) for c in coded[:k]]) n_packed = self.n_data / (self.counts[control]) for n in xrange(self.counts[control]): number = 0 for m in xrange(n_packed): index = n * n_packed + m number |= (1 if coded[index] else 0) << (n_bits - m) decoded.append(number) if verbose: print decoded[-self.counts[control] :] j, k, control = 0, 0, 0 return decoded
def decode(self, data, verbose=False): """ Return decoded sequence """ decoded = [] if verbose: print coded, j, k, control = [0] * self.n_data, 0, 0, 0 br = BitStreamReader(data) while not br.finished(): bit = br.get() if j < self.n_ctrl: control |= (bit << ((self.n_ctrl - 1) - j)) j += 1 else: coded[k] = bit k += 1 if k >= self.n_data: n_bits = (self.counts[::-1][control] - 1) if verbose: print ''.join([ str(b) for b in self.bits(control)[-self.n_ctrl:]]), ' ', print ''.join([ str(c) for c in coded[:k]]) n_packed = (self.n_data / (self.counts[control])) for n in xrange(self.counts[control]): number = 0 for m in xrange(n_packed): index = n * n_packed + m number |= ((1 if coded[index] else 0) << (n_bits - m)) decoded.append(number) if verbose: print decoded[-self.counts[control]:] j, k, control = 0, 0, 0 return decoded