資源簡介
基于lz77的c語言代碼 直接運行即可 直接往源文件.txt中輸入信息,在壓縮文件和解壓文件中即有相應顯示

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include
#define?OFFSET_CODING_LENGTH????(10)
#define?MAX_WND_SIZE????????????1024
#define?OFFSET_MASK_CODE????????(MAX_WND_SIZE-1)
const?ULONG?????m=3;
UCHAR???__buffer1__[0x200000];
UCHAR???__buffer2__[0x200000];
void
Write1ToBitStream(
???PUCHAR??pBuffer
???ULONG???ulBitOffset
???)
{
???ULONG???ulByteBoundary;
???ULONG???ulOffsetInByte;
???ulByteBoundary?=?ulBitOffset>>3?;
???ulOffsetInByte?=?ulBitOffset&7;
???*(pBuffer+ulByteBoundary)?|=?(1< }
void
Write0ToBitStream(
???PUCHAR??pBuffer
???ULONG???ulBitOffset
???)
{
???ULONG???ulByteBoundary;
???ULONG???ulOffsetInByte;
???ulByteBoundary?=?ulBitOffset>>3?;
???ulOffsetInByte?=?ulBitOffset&7;
???*(pBuffer+ulByteBoundary)?&=?(~(1< }
ULONG
ReadBitFromBitStream(
???PUCHAR??pBuffer
???ULONG???ulBitOffset
???)
{
???ULONG???ulByteBoundary;
???ULONG???ulOffsetInByte;
???ulByteBoundary?=?ulBitOffset>>3?;
???ulOffsetInByte?=?ulBitOffset&7;
???return?((*(PULONG)(pBuffer+ulByteBoundary))>>ulOffsetInByte)&1?;
}
ULONG?WINAPI
WriteGolombCode(
???ULONG???x
???PUCHAR??pBuffer
???ULONG???ulBitOffset
???)
{
???ULONG???????????q?r;
???int?????????????i;
???q?=?(x-1)>>m;
???r?=?x-(q<
???for(i=0;?(ULONG)i???{
???????Write1ToBitStream(pBuffer?ulBitOffset);
???}
???Write0ToBitStream(pBuffer?ulBitOffset);
???ulBitOffset++;
???for(i=0;?i ???{
???????if(?(r>>i)&1?)
???????{
???????????Write1ToBitStream(pBuffer?ulBitOffset);
???????}
???????else
???????{
???????????Write0ToBitStream(pBuffer?ulBitOffset);
???????}
???}
???return?m+q+1;
}
ULONG
ReadGolombCode(
???PULONG??pulCodingLength
???PUCHAR??pBuffer
???ULONG???ulBitOffset
???)
{
???ULONG???q?r;
???ULONG???bit;
???int?i;
???for(q=0;?;q++)
???{
???????bit?=?(ULONG)ReadBitFromBitStream(pBuffer?ulBitOffset);
???????ulBitOffset++;
???????if(?!bit?)
???????{
???????????break;
???????}
???}
???for(i=0?r=0;?(ULONG)i ???{
???????bit?=?(ULONG)ReadBitFromBitStream(pBuffer?ulBitOffset);
???????bit?<<=?i;
???????r?|=?bit;
???}
???*pulCodingLength?=?m?+?q?+?1;
???return?r+(q< }
ULONG
CompareStrings(
???PUCHAR??string1
???PUCHAR??string2
???ULONG???length
???)
{
???ULONG???????i;
???PUCHAR??????p1?p2;
???p1?=?string1;
???p2?=?string2;
???for(i=0;?i ???{
???????if(?*p1==*p2?)
???????{
???????????p1++;
???????????p2++;
???????}
???????else
???????{
???????????break;
???????}
???}
???return?p1-string1;
}
void?WINAPI
FindLongestSubstring(
???PUCHAR??pSourceString
???PUCHAR??pString
???ULONG???ulSourceStringLength
???PULONG??pulSubstringOffset
???PULONG??pulSubstringLength
???)
{
???PUCHAR??pSrc;
???ULONG???offset?length;
???ULONG???
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-04-11?12:44??完成版lz77程序\
?????目錄???????????0??2014-04-11?12:44??完成版lz77程序\Debug\
?????文件??????233525??2014-04-11?12:31??完成版lz77程序\Debug\lz77.exe
?????文件??????273464??2014-04-11?12:31??完成版lz77程序\Debug\lz77.ilk
?????文件???????30226??2014-04-11?12:31??完成版lz77程序\Debug\lz77.obj
?????文件?????3627720??2014-04-11?12:18??完成版lz77程序\Debug\lz77.pch
?????文件??????574464??2014-04-11?12:31??完成版lz77程序\Debug\lz77.pdb
?????文件??????156672??2014-04-11?12:44??完成版lz77程序\Debug\vc60.idb
?????文件???????86016??2014-04-11?12:31??完成版lz77程序\Debug\vc60.pdb
?????文件???????11772??2014-04-11?12:31??完成版lz77程序\lz77.cpp
?????文件????????3377??2014-04-11?12:44??完成版lz77程序\lz77.dsp
?????文件?????????516??2014-04-11?12:44??完成版lz77程序\lz77.dsw
?????文件???????50176??2014-04-11?12:44??完成版lz77程序\lz77.ncb
?????文件???????48640??2014-04-11?12:44??完成版lz77程序\lz77.opt
?????文件?????????242??2014-04-11?12:44??完成版lz77程序\lz77.plg
?????文件???????????0??2014-04-11?12:45??完成版lz77程序\壓縮文件.txt
?????文件???????????0??2014-04-11?12:45??完成版lz77程序\源文件.txt
?????文件???????????0??2014-04-11?12:45??完成版lz77程序\解壓文件.txt
評論
共有 條評論