小编hon*_*sik的帖子

Python中的QM编码实现 - 是16位字强制性的吗?

我正在尝试为教育目的实施QM编码.我的主要资源是"数据压缩手册"第5版第5.11章.这是我现在对编码器的粗略实现:

def _encode_bit(self, bit):
    if bit == self._lps:
        self._code_lps()
    else:
        self._code_mps()

def _code_mps(self):
    self._a = self._a - self._q_e()
    if self._a < 0x8000:
        self._switch_intervals_if_needed()
        self._renormalize()
        self._p_table.next_mps()

def _code_lps(self):
    self._c = self._c + self._a - self._q_e()
    self._a = self._q_e()
    self._switch_intervals_if_needed()
    self._renormalize()
    self._p_table.next_lps()

def _renormalize(self):
    while self._a < 0x8000:
        #C < 0,5 (0xFFFF / 3)
        if self._c < 0x5555:
            b = 0
            d = 0
        else:
            b = 1
            d = 0x5555
        self._write_bit(b)
        logger.debug("Written '%i' to output", b)
        #C = 2 * (C …
Run Code Online (Sandbox Code Playgroud)

python compression computer-science bit-manipulation

13
推荐指数
1
解决办法
306
查看次数