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

📄 hex.h

📁 本代码是自己封装的采用WINPCAP技术对在线设备分配IP地址。
💻 H
字号:
// Hex.h: interface for the CHex class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_HEX_H__E3F1855D_000F_48A0_97FE_9741538A51C0__INCLUDED_)
#define AFX_HEX_H__E3F1855D_000F_48A0_97FE_9741538A51C0__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define YGTRY try{
#define YGCATCH }catch (char *err){AfxMessageBox(err,MB_ICONERROR);};
class CHex  
{
public:

	CHex(CHex &bSourceHex);
	BOOL AddUINT(UINT nVal);

	void Trace(LPCTSTR szScript);


	CHex * GetHexItem(int nIndex);//这个函数是与Offset联合使用,offset是得出这些m_pOffsetHex,而这个函数是得到这些m_pOffsetHex的值
	BOOL Offset(int *pnOffset,int len);//根据pnOffset这个一维int 数组,和数组的无素个数len而分离出m_pOffsetHex


	int CreateFromSafeArray(COleSafeArray &sa);//由COleSafeArray创建成Hex
	BOOL CopyToByteArray(CByteArray &barray);//将CHEX无素复制到CByteArray
	int GetCurPoint() const;						//得到当前长度指针
	int GetSize() const;							//得到空间大小
	BOOL CopyTo(CHex &destHex,int iSize=-1); //复制到CHEX对象
	void MoveTo(int i);						//长度指针移动i
	void SetZero();							//将m_bHex清0
	void Move(int i=1);						//移动i
	BOOL SetAt(BYTE bData,int iPoint);		//设置某点的值
	BOOL SetData(int iBegin,BYTE *bSetData,int iLen);//设置某段值

	//追加
	BOOL Add(void *bAddData,int iLen);	
	BOOL Add(const CHex &bHex);
	BOOL Add(const CHex &bHex,int nBegin,int nLen);
	BOOL Cat(CHex &bData);
	BOOL AddTwoByte(USHORT wData);//添加两个字个字节,如添加0x1122,则添加m_bHex[i]=0x11,m_bHex[i+1]=0x22
	BOOL AddOneByte(BYTE bData);//添加一个字节
	BOOL AddASC(LPCTSTR szData);//添加ASCII字符串

	WPARAM ToULong();	//同USHORT,但这个是四个字节
	CTime ToCTime();			//转成CTime类型,但一定要求大等于6个字节
	char * ToTime();			//转成时间格式,如果CHex值:010203那么会转成01:02:03
	char * ToDBTime(BOOL IsShortYear=false);//转成数据库格式时间,如它会根据数据长度,而转成不同的日期时间长度XXXX-XX-XX XX:XX:XX
	UINT ToBCD();							//如1122会转成int 值为1122
	USHORT ToUShort();						//如1122会转成Hex,值为0x1122
	LPCTSTR ToShowString(BOOL IsSpace=true);

	void SetSize(int iSize);//分配内存用

	BYTE *m_bHex;

	
	operator BYTE *();
	operator CString();
	void operator =(const CHex &bHex);
	void operator =(CString &strbuf);
	void operator =(const char * szbuf);//添加,但长度指针会恢复到0,再进行赋值
	void operator +=(const char * szbuf);
	void operator >>(int nMoveToLen);//移动指针
	void operator <<(const CHex &bAddHex);
	void operator <<(const char *szbuf);//添加
	BOOL  operator ==(CHex & hex1);
	BOOL  operator !=(CHex & hex1);

	CHex();
	CHex(int isize);
	CHex(LPCTSTR szData);
	virtual ~CHex();
private:
	BOOL Buf2Hex_Single(const char *buf, UCHAR * hex);
	BOOL Buf2Hex(const char *buf, UCHAR *hex);
	int m_iSize;
	int m_iCurPoint;
	char * m_szbuf;
	BYTE *m_bAddHex;
	CHex * m_pOffsetHex;
};

#endif // !defined(AFX_HEX_H__E3F1855D_000F_48A0_97FE_9741538A51C0__INCLUDED_)
/*
_AFX_INLINE CString::operator LPCTSTR() const
	{ return m_pchData; }
	*/

⌨️ 快捷键说明

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