⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lzhtool.h

📁 一个解压程序,只要设定了解压路径和解压文件的种类,就可以随意解压
💻 H
字号:
#ifndef AFX_LZHTOOL_H__31F8AA01_3F84_11D4_8D96_8AB5A6462337__INCLUDED_
#define AFX_LZHTOOL_H__31F8AA01_3F84_11D4_8D96_8AB5A6462337__INCLUDED_

#include "Tool.h"

class CLzhTool : public CTool
{
//
// see LzhDecoder2.h
//

public:
	CLzhTool() : CTool( "Lzh 夝搥" )
	{
		// CRC僥乕僽儖弶婜壔
		for( WORD i=0,j,r; i!=256; i++ )
		{
			r = i;
			for( j=0; j!=8; j++ )
			{
				if( r&1 ) r = ((r>>1)^0xA001);//CRCPOLY
				else	  r>>=1;
			}
			crctable[i] = r;
		}
	}

	bool IsType( const char* ext )
//		{return 0==stricmp(ext,"lzh");}
		{return 0==strcmp(ext,"lzh");}	//fixed by uema2.

	bool Check( const char* fname, unsigned long fsize );
	bool Extract( const char* fname, const char* ddir );

private:
	int FindHeader( const char* fname, const BYTE* hdr, DWORD siz );
	bool ReadHeader( unsigned char* buf );

	WORD crctable[256];
	WORD crc;
	BYTE sum;
	void UpdateCRC( BYTE *p,int n )
		{while( n-- )crc = crctable[(crc^(*p++))&0xff] ^ (crc >> 8);}
	void UpdateSum( BYTE *p,int n )
		{while( n-- )sum+=*(p++);}
	int  fread_crc( BYTE* p,int n)
		{n=fread(p,1,n,lzh);if(n==-1)n=0;
		UpdateCRC(p,n);UpdateSum(p,n);return n;}

// 尰嵼張棟拞偺奿擺僼傽僀儖偺忣曬偑儊儞僶偵擖傞
	FILE *lzh,*out;

	BYTE  h_Level;					// 僿僢僟儗儀儖
	char  h_FileName[MAX_PATH*2];	// 僼傽僀儖柤(僷僗晅偒)
	char  h_Method[6];				// 埑弅朄 "-lh5-" 側偳丅
	DWORD h_CompSize;				// 埑弅偝傟偨僒僀僘
	DWORD h_OrigSize;				// 尦偺僒僀僘
	WORD  h_Attrib;					// 懏惈
	DWORD h_Update;					// 峏怴擔帪(h0,h1:ftime  h2:time_t)
};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -