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 + -
显示快捷键?