📄 hex.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 + -