📄 pack.h
字号:
// PACK.H 打包头文件
#define BYTE unsigned char
#define CHAR char
#define DWORD unsigned long
#define WORD unsigned short
#define PACK_KEY_NUMBER 1 // 数
#define PACK_KEY_COMMA 2 // ,
#define PACK_KEY_D 3 // D or d
#define PACK_KEY_LEFTA 4 // [
#define PACK_KEY_RIGHTA 5 // ]
#define PACK_KEY_LEFTB 6 // {
#define PACK_KEY_RIGHTB 7 // }
#define PACK_KEY_P 8 // P or p
#define PACK_KEY_C 9 // C or c
#define PACK_KEY_FLATF 10 // <F类描述符>
#define PACK_KEY_N 11 // N or n
#define PACK_KEY_ADDRESS 12 // &
#define PACK_KEY_BAD 13 // 非法字符
#define PACK_KEY_EOI 14 // 串尾
struct FlatPackControl_t
{
int Mode; //打解包标志 0:解包,1:打包
BYTE *StreamPtr; //字节流地址
int StreamLen; //字节流长度
int Vcount; //V部分的个数
int Oflag; //是否含O部分的标志
int Lflag; //V O部分长度指示语
int WorkingPos; //工作指针
int OPartPos; //O部分指针
int VPartPos; //V部分指针
int EOIPos; //结尾指针
int FpartLen; //F部分的长度
int Vencounted; //已处理的V参数个数
int Oencounted; //已处理的O参数个数
};
//以下是结构打解包控制结构
struct Token_t //标识结构
{
int Class; //标识编码
int Value; //整数的值或F类描述符
int Len; //F类描述符的长度
};
struct Envelop //树结点
{
int Next; //兄弟指针
int Father; //父亲指针
int Son; //长子指针
int StreamPtr; //流的起始地址
int StreamLen; //流长度
int TagLen; //标识长度
int LenLen; //长度字段长度
int BodyLen; //体长度
int State; //体状态
};
struct tree_control_t2 //控制区结点
{
BYTE * buf; //—>缓冲区首址
BYTE * format; //—>格式描述串首址
int BufPos; //工作指针—>当前缓冲区工作地址
int ScanPos; //工作指针—>当前格式描述串工作地址
int ErrCount; //错误记录
int level; //记录当前层次
int lengh; //缓冲区最大长度
int NodeNumber; //树节点记数
int CurrentNode; //当前节点
struct Envelop Env[30]; //按层次记录树结构
};
extern int BuildForest(int handle,int Father,int Limit);
extern int SolidPackBegin();
extern int SolidPackAttach(int handle,BYTE * s,int s_len);
extern int SolidPackContinue(int handle,BYTE *format,...);
extern int SolidPackEnd(int handle);
extern int SolidPackRelease(int handle);
extern int FlatPackBegin();
extern int FlatPackAttach(int handle,int vc,int o_flag,BYTE * s,int s_len);
extern int FlatPackSetVOLenLen(int handle,int LenLen);
extern int FlatPackFPart(int handle,BYTE *format,...);
extern int FlatPackVPart(int handle,BYTE *format,...);
extern int FlatPackOPart(int handle,BYTE * format,int name,...);
extern int FlatPackEnd(int handle,int EOC_f);
extern int FlatPackRelease(int handle);
extern int FlatUnPack(BYTE * buf,BYTE * format,...);
extern int FlatUnPackBegin();
extern int FlatUnPackAttach(int handle,BYTE * s,int s_len);
extern int FlatUnPackSetVOLenLen(int handle,int LenLen);
extern int FlatUnPackFPart(int handle,BYTE *format,...);
extern BYTE * FlatUnPackGetFPartBODY(int handle);
extern BYTE FlatUnPackGetBYTE(int handle);
extern DWORD FlatUnPackGetWORD(int handle);
extern int FlatUnPackGetFPartPos(int handle);
extern int FlatUnPackEOI(int handle);
extern int FlatUnPackSetFPartPos(int handle,int pos,int mode);
extern int FlatUnPackVPart(int handle,BYTE *format,int * len,...);
extern int FlatUnPackVSet(int handle);
extern int FlatUnPackVContinue(int handle,BYTE *format,...);
extern int FlatUnPackGetVPartLEN(int handle);
extern BYTE * FlatUnPackGetVPartBODY(int handle);
extern int FlatUnPackSkipVPart(int handle);
extern int FlatUnPackOPart(int handle,BYTE *format,int *name,int * len,...);
extern int FlatUnPackOSet(int handle);
extern int FlatUnPackOContinue(int handle,BYTE *format,...);
extern int FlatUnPackGetOPartNAME(int handle);
extern int FlatUnPackGetOPartLEN(int handle);
extern BYTE * FlatUnPackGetOPartBODY(int handle);
extern int FlatUnPackSkipOPart(int handle);
extern int FlatUnPackEnd(int handle);
extern int FlatUnPackRelease(int handle);
extern int SolidUnPackBegin();
extern int SolidUnPackAttach(int handle,BYTE * s,int s_len);
extern int SolidUnPackGetID(int handle);
extern int SolidUnPackGetLEN(int handle);
extern BYTE* SolidUnPackGetBODY(int handle);
extern int SolidUnPackSkipBODY(int handle);
extern int SolidUnPackFORWARD(int handle);
extern int SolidUnPackBACKWARD(int handle);
extern int SolidUnPackEnd(int handle);
extern int SolidUnPackRelease(int handle);
extern int show(BYTE * buf,int len);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -