赞
踩
TLV,简单理解就是type,length,value。是一种结构化的数据。一般type为4个字节的枚举,length为4个字节,表示value的长度。value即为实际的值。TLV直接可以嵌套,比如大的TLV中的value又是一个TLV。下面有个小例子帮助理解。
#include <stdio.h> #include <string> #ifdef _WIN32 #include <WinSock2.h> #pragma comment(lib, "WS2_32") #endif //_WIN32 enum emTLVNodeType { emTlvNNone = 0, emTlvNRoot, emTlvName, emTlvAge, emTlvColor }; typedef struct _CAT_INFO { char szName[12]; int iAge; int iColor; }CAT_INFO, *LPCAT_INFO; class CTlvPacket { public: CTlvPacket(char *pBuf, unsigned int len) :m_pData(pBuf), m_uiLength(len), m_pEndData(m_pData + len), m_pWritePtr(m_pData), m_pReadPtr(m_pData) { } ~CTlvPacket() { } bool WriteInt(int data, bool bMovePtr = true) { int tmp = htonl(data); return Write(&tmp, sizeof(int)); } bool Write(const void *pDst, unsigned int uiCount) { ::memcpy(m_pWritePtr, pDst, uiCount); m_pWritePtr
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。