📄 bitio.h
字号:
//“星载大压缩比数据压缩技术”压缩编解码核心算法
// 预扫描无链表零树编码 designed by 陈军 2000-5-15
//
// 比特流组织部分
//
unsigned char mask;
unsigned char rack;
unsigned char over_flag;
unsigned char *bit;
int maxbitlength;
int bitlen;
short bblen=0;
//
//void OpenOutputBitStream(int maxlen)
//{
// bit=(unsigned char*)malloc(maxlen);
// bitlen = 0; //实际上是字节计数
// rack = 0;
// mask = 0x80;
// maxbitlength = maxlen;
// over_flag = 0;
//}
void OpenInputBitStream()
{
rack = 0;
mask = 0x80;
maxbitlength = bitlen;
over_flag = 0;
bitlen = 0;
}
void OutputBit(char bitt)
{
if(over_flag==1) return;
if (bitt==1)
{
rack |= mask;
}
bblen++;
if(bblen%8==0)
{
bblen=0;
}
mask >>= 1;
if (mask == 0)
{
bit[bitlen++]=rack;
if(bitlen==maxbitlength) over_flag=1;
rack = 0;
mask = 0x80;
}
}
void OutputBits(char code,char count)
{
unsigned char mmask;
mmask = 1 << (count-1);
while (mmask != 0)
{
if (mmask & code) rack |= mask;
mask >>= 1;
if (mask == 0)
{
bit[bitlen++]=rack;
rack = 0;
mask = 0x80;
}
mmask >>= 1;
}
}
char InputBit()
{
char value=0;
if(over_flag==1) return 0;
if (mask == 0x80)
{
rack = bit[bitlen++];
if(bitlen==maxbitlength) over_flag=1;
}
value = rack & mask;
mask >>= 1;
if (mask == 0) mask = 0x80;
return(value?1:0);
}
char InputBits(char bit_count)
{
unsigned char mmask, return_value=0;
mmask = 1 << (bit_count-1);
while (mmask != 0)
{
if (mask == 0x80) rack = bit[bitlen++];
if (rack & mask) return_value |= mmask;
mmask >>= 1;
mask >>= 1;
if (mask == 0) mask = 0x80;
}
return (return_value);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -