📄 cbitstream.cpp
字号:
#include "stdafx.h"
#include "color.h"
#include "Cbitstream.h"
#include "commonvar.h"
inline void CBitStream::PutOneBit1(void)
{ CurrentWriteByte|=bit_set_mask[BitPosition--];
if (BitPosition<0)
{OutputBuffer[BytePosition++]=CurrentWriteByte;
BitPosition=7;
CurrentWriteByte=0;
}
}
inline void CBitStream::PutOneBit0(void)
{
if (--BitPosition<0)
{OutputBuffer[BytePosition++]=CurrentWriteByte;
BitPosition=7;
CurrentWriteByte=0;
}
}
int CBitStream::ZeroFlush(void)
{
int bits = 0;
while (BitPosition!=7)
{PutOneBit0();
bits++;
}
ByteLength=BytePosition;
return bits;
}
void CBitStream::PutOneBit(BOOL BitValue)
{
if (BitValue)
PutOneBit1();
else
PutOneBit0();
}
void CBitStream::PutVarible(int BitValue,int BitCount)
{
BYTE OrByte;
DWORD ww;
int BitLeft;
if (BitCount<=BitPosition)
{OrByte=(BYTE)(BitValue&msk[BitCount]);
CurrentWriteByte|=(OrByte<<(BitPosition-BitCount+1));
BitPosition-=BitCount;
}
else if (BitCount==(BitPosition+1))
{OrByte=(BYTE)(BitValue&msk[BitCount]);
BitPosition=7;
OutputBuffer[BytePosition++]=(CurrentWriteByte|OrByte);
CurrentWriteByte=0;
}
else
{BitLeft=BitCount-BitPosition-1;
ww=BitValue&(msk[BitPosition+1]<<BitLeft);
OrByte=(BYTE)(ww>>BitLeft);
OutputBuffer[BytePosition++]=(CurrentWriteByte|OrByte);
BitPosition=7;
CurrentWriteByte=0;
while (BitLeft>=8)
{ww=(BitValue&msk[BitLeft])>>(BitLeft-8);
OutputBuffer[BytePosition++]=(BYTE)ww;
BitLeft-=8;
}
if (BitLeft>0)
{OrByte=(BYTE)(BitValue&msk[BitLeft]);
CurrentWriteByte=OrByte<<(8-BitLeft);
BitPosition=7-BitLeft;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -