亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? peeperzip.cpp

?? 這是個soket的代碼不是太實用但是對出學(xué)者還是有些幫助的 有需要的可以
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
///////////////////////////////////////////////////////////////////////////////
// 遠程控制軟件-偷窺者  壓縮庫                                               //
// 日期:2001/10/02                                                           //
// 作者:劉東發(fā)                                                               //
// Email:dongfa@yeah.net                                                     //
// http://dongfa.yeah.net                                                    //
// OICQ:5584173  阿東                                                        //
// 作者聲明:                                                                 //
//     此部分代碼是從網(wǎng)上下載獲得,經(jīng)過本人的改寫, 變得容易使用,希望能給   //
// 大家?guī)矸奖?                                                             //
///////////////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "PeeperZip.h"

///////////////////////////////////////////////////////////////////////////////
//LZ77 Part START--------------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////
int CCompress::UpperLog2(int n)
{
	int i = 0;
	if (n > 0)
	{
		int m = 1;
		while(1)
		{
			if (m >= n)
				return i;
			m <<= 1;
			i++;
		}
	}
	else 
		return -1;
}

int CCompress::LowerLog2(int n)
{
	int i = 0;
	if (n > 0)
	{
		int m = 1;
		while(1)
		{
			if (m == n)
				return i;
			if (m > n)
				return i - 1;
			m <<= 1;
			i++;
		}
	}
	else 
		return -1;
}

void CCompress::MovePos(int* piByte, int* piBit, int num)
{
	num += (*piBit);
	(*piByte) += num / 8;
	(*piBit) = num % 8;
}

BYTE CCompress::GetBit(BYTE byte, int pos)
{
	int j = 1;
	j <<= 7 - pos;
	if (byte & j)
		return 1;
	else 
		return 0;
}

void CCompress::SetBit(BYTE* byte, int iBit, BYTE aBit)
{
	if (aBit)
		(*byte) |= (1 << (7 - iBit));
	else
		(*byte) &= ~(1 << (7 - iBit));
}

void CCompress::InvertDWord(DWORD* pDW)
{
	union UDWORD{ DWORD dw; BYTE b[4]; };
	UDWORD* pUDW = (UDWORD*)pDW;
	BYTE b;
	b = pUDW->b[0];	pUDW->b[0] = pUDW->b[3]; pUDW->b[3] = b;
	b = pUDW->b[1];	pUDW->b[1] = pUDW->b[2]; pUDW->b[2] = b;
}

void CCompress::CopyBits(BYTE* memDest, int nDestPos, 
			  BYTE* memSrc, int nSrcPos, int nBits)
{
	int iByteDest = 0, iBitDest;
	int iByteSrc = 0, iBitSrc = nSrcPos;

	int nBitsToFill, nBitsCanFill;

	while (nBits > 0)
	{
		nBitsToFill = min(nBits, iByteDest ? 8 : 8 - nDestPos);
		iBitDest = iByteDest ? 0 : nDestPos;
		nBitsCanFill = min(nBitsToFill, 8 - iBitSrc);
		CopyBitsInAByte(memDest + iByteDest, iBitDest, 
			memSrc + iByteSrc, iBitSrc, nBitsCanFill);		
		if (nBitsToFill > nBitsCanFill)
		{
			iByteSrc++; iBitSrc = 0; iBitDest += nBitsCanFill;
			CopyBitsInAByte(memDest + iByteDest, iBitDest, 
					memSrc + iByteSrc, iBitSrc, 
					nBitsToFill - nBitsCanFill);
			iBitSrc += nBitsToFill - nBitsCanFill;
		}
		else 
		{
			iBitSrc += nBitsCanFill;
			if (iBitSrc >= 8)
			{
				iByteSrc++; iBitSrc = 0;
			}
		}

		nBits -= nBitsToFill;
		iByteDest++;
	}	
}

void CCompress::CopyBitsInAByte(BYTE* memDest, int nDestPos, 
			  BYTE* memSrc, int nSrcPos, int nBits)
{
	BYTE b1, b2;
	b1 = *memSrc;
	b1 <<= nSrcPos; b1 >>= 8 - nBits;
	b1 <<= 8 - nBits - nDestPos;
	*memDest |= b1;
	b2 = 0xff; b2 <<= 8 - nDestPos;
	b1 |= b2;
	b2 = 0xff; b2 >>= nDestPos + nBits;
	b1 |= b2;
	*memDest &= b1;
}

CCompressLZ77::CCompressLZ77()
{	
	SortHeap = new struct STIDXNODE[_MAX_WINDOW_SIZE];
}

CCompressLZ77::~CCompressLZ77()
{
	delete[] SortHeap;
}

void CCompressLZ77::_InitSortTable()
{
	memset(SortTable, 0, sizeof(WORD) * 65536);
	nWndSize = 0;
	HeapPos = 1;
}

void CCompressLZ77::_InsertIndexItem(int off)
{
	WORD q;
	BYTE ch1, ch2;
	ch1 = pWnd[off]; ch2 = pWnd[off + 1];	
	
	if (ch1 != ch2)
	{
		q = HeapPos;
		HeapPos++;
		SortHeap[q].off = off;
		SortHeap[q].next = SortTable[ch1 * 256 + ch2];
		SortTable[ch1 * 256 + ch2] = q;
	}
	else
	{
		q = SortTable[ch1 * 256 + ch2];
		if (q != 0 && off == SortHeap[q].off2 + 1)
		{		
			SortHeap[q].off2 = off;
		}		
		else
		{
			q = HeapPos;
			HeapPos++;
			SortHeap[q].off = off;
			SortHeap[q].off2 = off;
			SortHeap[q].next = SortTable[ch1 * 256 + ch2];
			SortTable[ch1 * 256 + ch2] = q;
		}
	}
}

void CCompressLZ77::_ScrollWindow(int n)
{	
	for (int i = 0; i < n; i++)
	{		
		nWndSize++;		
		if (nWndSize > 1)			
			_InsertIndexItem(nWndSize - 2);
	}
}

int CCompressLZ77::_GetSameLen(BYTE* src, int srclen, int nSeekStart, int offset)
{
	int i = 2;
	int maxsame = min(srclen - nSeekStart, nWndSize - offset);
	while (i < maxsame
			&& src[nSeekStart + i] == pWnd[offset + i])
		i++;
	_ASSERT(nSeekStart + i <= srclen && offset + i <= nWndSize);
	return i;
}

BOOL CCompressLZ77::_SeekPhase(BYTE* src, int srclen, int nSeekStart, int* offset, int* len)
{	
	int j, m, n;

	if (nSeekStart < srclen - 1)
	{
		BYTE ch1, ch2;
		ch1 = src[nSeekStart]; ch2 = src[nSeekStart + 1];
		WORD p;
		p = SortTable[ch1 * 256 + ch2];
		if (p != 0)
		{
			m = 2; n = SortHeap[p].off;
			while (p != 0)
			{
				j = _GetSameLen(src, srclen, 
					nSeekStart, SortHeap[p].off);
				if ( j > m )
				{ 
					m = j; 
					n = SortHeap[p].off;
				}			
				p = SortHeap[p].next;
			}	
			(*offset) = n; 
			(*len) = m;
			return TRUE;		
		}	
	}
	return FALSE;
}

void CCompressLZ77::_OutCode(BYTE* dest, DWORD code, int bits, BOOL isGamma)
{	
	if ( isGamma )
	{
		BYTE* pb;
		DWORD out;
		int GammaCode = (int)code - 1;
		int q = LowerLog2(GammaCode);
		if (q > 0)
		{
			out = 0xffff;
			pb = (BYTE*)&out;
			CopyBits(dest + CurByte, CurBit, 
				pb, 0, q);
			MovePos(&CurByte, &CurBit, q);
		}
		out = 0;
		pb = (BYTE*)&out;		
		CopyBits(dest + CurByte, CurBit, pb + 3, 7, 1);
		MovePos(&CurByte, &CurBit, 1);
		if (q > 0)
		{
			int sh = 1;
			sh <<= q;
			out = GammaCode - sh;
			pb = (BYTE*)&out;
			InvertDWord(&out);
			CopyBits(dest + CurByte, CurBit, 
				pb + (32 - q) / 8, (32 - q) % 8, q);
			MovePos(&CurByte, &CurBit, q);
		}
	}
	else 
	{
		DWORD dw = (DWORD)code;
		BYTE* pb = (BYTE*)&dw;
		InvertDWord(&dw);
		CopyBits(dest + CurByte, CurBit, 
				pb + (32 - bits) / 8, (32 - bits) % 8, bits);
		MovePos(&CurByte, &CurBit, bits);
	}
}

int CCompressLZ77::Compress(BYTE* src, int srclen, BYTE* dest)
{
	int i;
	CurByte = 0; CurBit = 0;	
	int off, len;

	if (srclen > 65536) 
		return -1;

	pWnd = src;
	_InitSortTable();
	for (i = 0; i < srclen; i++)
	{		
		if (CurByte >= srclen)
			return 0;
		if (_SeekPhase(src, srclen, i, &off, &len))
		{			
			_OutCode(dest, 1, 1, FALSE);
			_OutCode(dest, len, 0, TRUE);

			_OutCode(dest, off, UpperLog2(nWndSize), FALSE);
						
			_ScrollWindow(len);
			i += len - 1;
		}
		else
		{
			_OutCode(dest, 0, 1, FALSE);
			_OutCode(dest, (DWORD)(src[i]), 8, FALSE);
			_ScrollWindow(1);
		}
	}
	int destlen = CurByte + ((CurBit) ? 1 : 0);
	if (destlen >= srclen)
		return 0;
	return destlen;
}

BOOL CCompressLZ77::Decompress(BYTE* src, int srclen, BYTE* dest)
{
	int i;
	CurByte = 0; CurBit = 0;
	pWnd = src;		// 初始化窗口
	nWndSize = 0;

	if (srclen > 65536) 
		return FALSE;
	
	for (i = 0; i < srclen; i++)
	{		
		BYTE b = GetBit(dest[CurByte], CurBit);
		MovePos(&CurByte, &CurBit, 1);
		if (b == 0) // 單個字符
		{
			CopyBits(src + i, 0, dest + CurByte, CurBit, 8);
			MovePos(&CurByte, &CurBit, 8);
			nWndSize++;
		}
		else		// 窗口內(nèi)的術(shù)語
		{
			int q = -1;
			while (b != 0)
			{
				q++;
				b = GetBit(dest[CurByte], CurBit);
				MovePos(&CurByte, &CurBit, 1);				
			}
			int len, off;
			DWORD dw = 0;
			BYTE* pb;
			if (q > 0)
			{				
				pb = (BYTE*)&dw;
				CopyBits(pb + (32 - q) / 8, (32 - q) % 8, dest + CurByte, CurBit, q);
				MovePos(&CurByte, &CurBit, q);
				InvertDWord(&dw);
				len = 1;
				len <<= q;
				len += dw;
				len += 1;
			}
			else
				len = 2;

			dw = 0;
			pb = (BYTE*)&dw;
			int bits = UpperLog2(nWndSize);
			CopyBits(pb + (32 - bits) / 8, (32 - bits) % 8, dest + CurByte, CurBit, bits);
			MovePos(&CurByte, &CurBit, bits);
			InvertDWord(&dw);
			off = (int)dw;
			for (int j = 0; j < len; j++)
			{
				_ASSERT(i + j <  srclen);
				_ASSERT(off + j <  _MAX_WINDOW_SIZE);
				
				src[i + j] = pWnd[off + j];
			}
			nWndSize += len;
			i += len - 1;
		}
		if (nWndSize > _MAX_WINDOW_SIZE)
		{
			pWnd += nWndSize - _MAX_WINDOW_SIZE;
			nWndSize = _MAX_WINDOW_SIZE;			
		}
	}

	return TRUE;
}
///////////////////////////////////////////////////////////////////////////////
//LZ77 Part END--------------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////
//LZSS Part START--------------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////

HGLOBAL C_LZSS::Encode(char *chData, int nSize)
{
	if(!AfxIsValidAddress(chData, nSize))
		return NULL;

//緩沖數(shù)據(jù)區(qū)大小
const int nMaxSize = 65536;

	HGLOBAL hZip = NULL;
	hZip = ::GlobalAlloc(GHND, nMaxSize);
	if(hZip == NULL)
	{
		return NULL;
	}
	LPBYTE lpZipData = (LPBYTE)::GlobalLock(hZip);
	BYTE byMaxBuf[nMaxSize];
	ZeroMemory(byMaxBuf, nMaxSize);

	int nCurPos = 0; //記下數(shù)據(jù)的位置

	int nZipPos = 0; //記下壓縮數(shù)據(jù)的位置
	int nBufPos = 0; //記下當前存儲位置hZip
	int nZipSize = 0; //壓縮后數(shù)據(jù)的大小

	int  i, c, len, r, s, last_match_length, code_buf_ptr;
	unsigned char code_buf[17], mask;
	InitTree();
	code_buf[0] = 0;
	code_buf_ptr = mask = 1;
	s = 0;  r = LZSS_N - LZSS_F;
	for(i = s; i < r; i++)
	{
		text_buf[i] = ' ';
	}
	for(len = 0; len < LZSS_F && (nCurPos < nSize/*getc(infile)*/); len++)
	{
		c = chData[nCurPos]; //add
		nCurPos ++; //add
		text_buf[r + len] = c;
	}
	if((textsize = len) == 0)
	{
		return false;
	}
	for(i = 1; i <= LZSS_F; i++)
	{
		InsertNode(r - i);
	}
	InsertNode(r);
	do
	{
		if(match_length > len)
		{
			match_length = len;
		}
		if(match_length <= LZSS_THRESHOLD)
		{
			match_length = 1;
			code_buf[0] |= mask;
			code_buf[code_buf_ptr++] = text_buf[r];
		}
		else
		{
			code_buf[code_buf_ptr++] = (unsigned char) match_position;
			code_buf[code_buf_ptr++] = (unsigned char)
				(((match_position >> 4) & 0xf0)
			  | (match_length - (LZSS_THRESHOLD + 1)));
		}
		if((mask <<= 1) == 0)
		{
			for(i = 0; i < code_buf_ptr; i++)
			{
				//存儲這個壓縮字節(jié)
				if(nZipPos >= nMaxSize)
				{
					nZipPos = 0;
					memcpy(lpZipData + nBufPos, byMaxBuf, nMaxSize);
					nBufPos += nMaxSize;

					::GlobalUnlock(hZip); //重新分配內(nèi)存
					hZip = ::GlobalReAlloc(hZip, nBufPos + nMaxSize, 0);
					lpZipData = (LPBYTE)::GlobalLock(hZip);
				}
				byMaxBuf[nZipPos] = code_buf[i];
				nZipPos ++;
				nZipSize ++; //當前壓縮數(shù)據(jù)的大小
			}
			codesize += code_buf_ptr;
			code_buf[0] = 0;
			code_buf_ptr = mask = 1;
		}
		last_match_length = match_length;
		for(i = 0; i < last_match_length && (nCurPos < nSize)/*c = getc(infile)) != EOF*/; i++)
		{
			c = chData[nCurPos]; //add
			nCurPos ++; //add
			DeleteNode(s);
			text_buf[s] = c;
			if(s < LZSS_F - 1)
			{
				text_buf[s + LZSS_N] = c;
			}
			s = (s + 1) & (LZSS_N - 1);
			r = (r + 1) & (LZSS_N - 1);
			InsertNode(r);
		}
		if((textsize += i) > printcount)
		{
			printcount += 1024;
		}
		while(i++ < last_match_length)
		{
			DeleteNode(s);
			s = (s + 1) & (LZSS_N - 1);
			r = (r + 1) & (LZSS_N - 1);
			if(--len)
			{
				InsertNode(r);
			}
		}
	}while (len > 0);
	if(code_buf_ptr > 1)
	{
		for(i = 0; i < code_buf_ptr; i++)
		{
			//存儲這個壓縮字節(jié)
			if(nZipPos >= nMaxSize)
			{
				nZipPos = 0;
				memcpy(lpZipData + nBufPos, byMaxBuf, nMaxSize);
				nBufPos += nMaxSize;

				::GlobalUnlock(hZip); //重新分配內(nèi)存
				hZip = ::GlobalReAlloc(hZip, nBufPos + nMaxSize, 0);
				lpZipData = (LPBYTE)::GlobalLock(hZip);
			}
			byMaxBuf[nZipPos] = code_buf[i];
			nZipPos ++;
			nZipSize ++; //當前壓縮數(shù)據(jù)的大小
		}
		codesize += code_buf_ptr;
	}
	//存儲剩余的壓縮數(shù)據(jù)
	if(nZipPos > 0)
	{
		memcpy(lpZipData + nBufPos, byMaxBuf, nZipPos);
	}
	::GlobalUnlock(hZip); //重新分配內(nèi)存
	hZip = ::GlobalReAlloc(hZip, nZipSize, 0);
	return hZip;
}

HGLOBAL C_LZSS::Decode(char *chZipData, int nZipSize)
{
	if(!AfxIsValidAddress(chZipData, nZipSize))

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美视频一区二区| 欧美丰满高潮xxxx喷水动漫| 国产女主播视频一区二区| 国产精品996| 中文字幕不卡三区| 色哟哟日韩精品| 亚洲一二三区不卡| 欧美成人三级电影在线| 国产成a人无v码亚洲福利| 国产精品国产三级国产a| 91极品美女在线| 视频在线观看91| 久久久亚洲午夜电影| 成av人片一区二区| 亚洲国产成人tv| 欧美精品一区二区三| 成人a级免费电影| 亚洲3atv精品一区二区三区| 欧美r级在线观看| 91一区在线观看| 三级久久三级久久久| 国产欧美日韩视频在线观看| 91久久香蕉国产日韩欧美9色| 午夜av电影一区| 国产亚洲欧美日韩日本| 老司机精品视频一区二区三区| 国产999精品久久久久久| 久久九九国产精品| 欧美精品乱码久久久久久 | 国产精品888| 亚洲一区二区三区四区五区黄 | 欧美日韩黄色一区二区| 日本大香伊一区二区三区| 91免费精品国自产拍在线不卡| 国产91精品一区二区麻豆亚洲| 国产在线精品一区在线观看麻豆| 麻豆精品一区二区三区| 青青草91视频| 久久99久久精品| 精品午夜一区二区三区在线观看| 免费一区二区视频| 国产盗摄视频一区二区三区| 国产一区二区三区视频在线播放| 看国产成人h片视频| 国产综合久久久久久鬼色| 国产在线精品一区二区夜色| 国产成人亚洲精品狼色在线| 东方aⅴ免费观看久久av| 成人免费视频一区二区| 99九九99九九九视频精品| 色偷偷久久人人79超碰人人澡 | 久久蜜臀中文字幕| 亚洲国产精品精华液ab| 亚洲色欲色欲www在线观看| 国产精品视频在线看| 亚洲人成网站在线| 亚洲精品一卡二卡| 午夜激情久久久| 精品综合免费视频观看| 国产毛片精品国产一区二区三区| 国产jizzjizz一区二区| 99在线热播精品免费| 欧美日韩在线播放一区| 日韩精品影音先锋| 一区视频在线播放| 亚洲高清免费在线| 国产一区二区电影| 色呦呦一区二区三区| 日韩亚洲欧美高清| 中文一区一区三区高中清不卡| 亚洲欧美日韩久久精品| 奇米综合一区二区三区精品视频| 国产一区二区视频在线| 99久久久精品| 欧美一区二区福利在线| 中文一区二区在线观看| 亚洲成a天堂v人片| 国产黄人亚洲片| 欧美在线综合视频| 精品伦理精品一区| 亚洲精品免费一二三区| 蜜桃视频在线观看一区| 91丨九色丨蝌蚪丨老版| 日韩一区二区三区免费观看| 国产精品第五页| 日韩不卡一区二区三区| 成人伦理片在线| 欧美肥妇毛茸茸| 国产精品免费久久| 青青草国产成人av片免费| 99热这里都是精品| 精品日本一线二线三线不卡| 日韩在线播放一区二区| 成人av网站免费观看| 91精品在线观看入口| 亚洲欧美自拍偷拍色图| 久久精品国产精品亚洲综合| 91国偷自产一区二区使用方法| 欧美一二三在线| 亚洲免费成人av| 国产成人日日夜夜| 日韩天堂在线观看| 亚洲国产中文字幕| 91免费国产视频网站| 久久久久国产精品厨房| 日韩国产精品久久| 色综合夜色一区| 中文天堂在线一区| 国产一区二区0| 欧美一区二区三区在| 亚洲风情在线资源站| 一本大道久久精品懂色aⅴ| 欧美极品aⅴ影院| 国产精选一区二区三区| 日韩一级片网址| 石原莉奈在线亚洲三区| 色就色 综合激情| 国产精品三级久久久久三级| 国产一区二区三区免费| 日韩一二在线观看| 午夜不卡av免费| 欧美剧在线免费观看网站| 亚洲欧美日韩国产综合在线| av爱爱亚洲一区| 成人欧美一区二区三区黑人麻豆| 国产成人啪免费观看软件 | 国产精品日韩精品欧美在线| 国产精品一区二区免费不卡 | 丁香亚洲综合激情啪啪综合| 国产丝袜美腿一区二区三区| 精品一区二区三区在线播放视频| 日韩一级大片在线观看| 蜜桃av噜噜一区| 日韩一区二区在线观看视频播放| 日韩av电影免费观看高清完整版| 日韩一区二区在线播放| 欧美aaa在线| 精品久久国产字幕高潮| 黑人巨大精品欧美一区| 国产视频一区二区在线观看| 国产激情视频一区二区三区欧美 | 波多野结衣的一区二区三区| 国产欧美日韩一区二区三区在线观看| 国产一区不卡精品| 欧美高清在线视频| 日本电影欧美片| 天天av天天翘天天综合网| 欧美一区二区三区喷汁尤物| 蜜桃av一区二区在线观看| 26uuu国产电影一区二区| 国产成人超碰人人澡人人澡| 亚洲丝袜精品丝袜在线| 欧美影视一区在线| 美日韩黄色大片| 亚洲精品大片www| 欧美日韩一区在线| 日本 国产 欧美色综合| 久久久99免费| 一本大道av一区二区在线播放 | 亚洲欧美一区二区三区孕妇| 色94色欧美sute亚洲线路一久| 亚洲综合一区在线| 日韩欧美在线1卡| 国产成人免费视频一区| 亚洲人被黑人高潮完整版| 欧美日韩国产另类不卡| 国产专区综合网| 亚洲狼人国产精品| 日韩三级视频在线看| 丁香另类激情小说| 亚洲成人精品在线观看| 精品国产一区久久| 色综合久久九月婷婷色综合| 日韩和欧美一区二区三区| 国产亚洲精品超碰| 欧美午夜寂寞影院| 国产一区二区在线影院| 亚洲欧美日韩在线| 日韩一区二区三区四区五区六区| 国产寡妇亲子伦一区二区| 亚洲高清免费观看高清完整版在线观看| 精品国内片67194| 在线中文字幕不卡| 国产一区二区h| 午夜精品福利在线| 中文字幕在线观看一区| 日韩一级高清毛片| 在线观看av一区二区| 国产精品一区二区在线观看不卡 | 91精品免费在线| 99riav一区二区三区| 久草精品在线观看| 亚洲大型综合色站| 国产精品久久久久影院亚瑟| 欧美本精品男人aⅴ天堂| 在线观看中文字幕不卡| 国产成人免费视频网站高清观看视频| 午夜av一区二区| 一区二区三区精品| 国产精品久久久久久福利一牛影视|