coder.cpp
来自「著名压缩解压缩算法7z的源代码,开发环境是vc++,十分方便大家学习.」· C++ 代码 · 共 48 行
CPP
48 行
inline unsigned int RangeCoder::GetChar(){ return(UnpackRead->GetChar());}void RangeCoder::InitDecoder(Unpack *UnpackRead){ RangeCoder::UnpackRead=UnpackRead; low=code=0; range=uint(-1); for (int i=0;i < 4;i++) code=(code << 8) | GetChar();}#define ARI_DEC_NORMALIZE(code,low,range,read) \{ \ while ((low^(low+range))<TOP || range<BOT && ((range=-low&(BOT-1)),1)) \ { \ code=(code << 8) | read->GetChar(); \ range <<= 8; \ low <<= 8; \ } \}inline int RangeCoder::GetCurrentCount() { return (code-low)/(range /= SubRange.scale);}inline uint RangeCoder::GetCurrentShiftCount(uint SHIFT) { return (code-low)/(range >>= SHIFT);}inline void RangeCoder::Decode(){ low += range*SubRange.LowCount; range *= SubRange.HighCount-SubRange.LowCount;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?