-
用来序列化通用的数据类型
-
-
-
-
-
-
-
-
-
-
#include "stdafx.h"
-
#include "StandardSerialize.h"
-
-
-
CStandardSerialize::CStandardSerialize(char * apBuffer,long alBufLen, ENUM_TYPE abyType)
-
{
-
mpBuffer = apBuffer;
-
mbyType = abyType;
-
mlBufLen = alBufLen;
-
mlDataLen = 0;
-
}
-
-
CStandardSerialize::~CStandardSerialize()
-
{
-
}
-
-
long CStandardSerialize::getDataLen()
-
{
-
return mlDataLen;
-
}
-
-
int CStandardSerialize::Serialize(bool& abValue)
-
{
-
if (mlBufLen < (mlDataLen+1))
-
throw(-1);
-
-
if (mbyType == LOAD)
-
{
-
memcpy(&abValue,mpBuffer + mlDataLen, 1);
-
}
-
else
-
{
-
memcpy(mpBuffer + mlDataLen, &abValue, 1);
-
}
-
mlDataLen += 1;
-
-
return 1;
-
}
-
-
-
int CStandardSerialize::Serialize(int& aiValue)
-
{
-
if (mlBufLen < (mlDataLen+4))
-
throw(-1);
-
-
if (mbyType == LOAD)
-
{
-
memcpy(&aiValue,mpBuffer + mlDataLen, 4);
-
}
-
else
-
{
-
memcpy(mpBuffer + mlDataLen, &aiValue, 4);
-
}
-
mlDataLen += 4;
-
return 1;
-
}
-
-
int CStandardSerialize::Serialize(BYTE& abyValue)
-
{
-
if (mlBufLen < (mlDataLen+1))
-
throw(-1);
-
-
if (mbyType == LOAD)
-
{
-
memcpy(&abyValue,mpBuffer + mlDataLen, 1);
-
}
-
else
-
{
-
memcpy(mpBuffer + mlDataLen, &abyValue, 1);
-
}
-
mlDataLen += 1;
-
return 1;
-
}
-
-
-
-
-
-
-
-
-
-
-
-
int CStandardSerialize::Serialize(short& asValue)
-
{
-
if (mlBufLen < (mlDataLen+2))
-
throw(-1);
-
-
if (mbyType == LOAD)
-
{
-
memcpy(&asValue,mpBuffer + mlDataLen, 2);
-
}
-
else
-
{
-
memcpy(mpBuffer + mlDataLen, &asValue, 2);
-
}
-
mlDataLen += 2;
-
return 1;
-
-
}
-
-
int CStandardSerialize::Serialize(WORD& awValue)
-
{
-
if (mlBufLen < (mlDataLen+2))
-
throw(-1);
-
-
if (mbyType == LOAD)
-
{
-
memcpy(&awValue,mpBuffer + mlDataLen, 2);
-
}
-
else
-
{
-
memcpy(mpBuffer + mlDataLen, &awValue, 2);
-
}
-
mlDataLen += 2;
-
return 1;
-
}
-
-
int CStandardSerialize::Serialize(long& alValue)
-
{
-
if (mlBufLen < (mlDataLen+4))
-
throw(-1);
-
-
if (mbyType == LOAD)
-
{
-
memcpy(&alValue,mpBuffer + mlDataLen, 4);
-
}
-
else
-
{
-
memcpy(mpBuffer + mlDataLen, &alValue, 4);
-
}
-
mlDataLen += 4;
-
return 1;
-
}
-
-
int CStandardSerialize::Serialize(unsigned long& aulValue)
-
{
-
if (mlBufLen < (mlDataLen+4))
-
throw(-1);
-
-
if (mbyType == LOAD)
-
{
-
memcpy(&aulValue,mpBuffer + mlDataLen, 4);
-
}
-
else
-
{
-
memcpy(mpBuffer + mlDataLen, &aulValue, 4);
-
}
-
mlDataLen += 4;
-
-
return 1;
-
}
-
-
int CStandardSerialize::Serialize(__int64& aiValue)
-
{
-
if (mlBufLen < (mlDataLen+8))
-
throw(-1);
-
-
if (mbyType == LOAD)
-
{
-
memcpy(&aiValue,mpBuffer + mlDataLen, 8);
-
}
-
else
-
{
-
memcpy(mpBuffer + mlDataLen, &aiValue, 8);
-
}
-
mlDataLen += 8;
-
-
return 1;
-
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
int CStandardSerialize::Serialize(char * apValue,WORD awMaxLen)
-
{
-
if (mlBufLen < (mlDataLen+2))
-
throw(-1);
-
-
WORD lwLen = 0;
-
if (mbyType == LOAD)
-
{
-
-
memcpy(&lwLen,mpBuffer + mlDataLen, 2);
-
mlDataLen += 2;
-
-
-
if ((lwLen >= awMaxLen) || ((mlDataLen+lwLen) > mlBufLen))
-
{
-
throw(-1);
-
}
-
memcpy(apValue, mpBuffer + mlDataLen, lwLen);
-
apValue[lwLen] = ' ';
-
mlDataLen += lwLen;
-
}
-
else
-
{
-
-
lwLen = strlen(apValue);
-
if ((lwLen >= awMaxLen) || (lwLen+mlDataLen+2 > mlBufLen))
-
throw(-1);
-
-
memcpy(mpBuffer+mlDataLen, &lwLen, 2);
-
mlDataLen += 2;
-
-
-
memcpy(mpBuffer+mlDataLen, apValue, lwLen);
-
mlDataLen += lwLen;
-
}
-
return 1;
-
}
-
-
-
-
-
-
-
-
-
-
int CStandardSerialize::Serialize(char * apValue, WORD awLen,WORD aiBufferLen)
-
{
-
if ((awLen > aiBufferLen) || (mlBufLen < (mlDataLen+awLen)))
-
throw (-1);
-
-
if (mbyType == LOAD)
-
{
-
-
memcpy(apValue, mpBuffer + mlDataLen, awLen);
-
}
-
else
-
{
-
memcpy(mpBuffer+mlDataLen, apValue, awLen);
-
}
-
mlDataLen += awLen;
-
return 1;
-
}
-
相关阅读:
Swift学习笔记(7)--控制流
安装APK时报 Installation failed with message Failed to finalize session : INSTALL_FAILED_USER_RESTRICTED: Invalid apk.
Android Notification 的四种使用方式
Socket.io
socket
socket.io 中文手册 socket.io 中文文档
Android中的CardView使用
TabLayout实现底部导航栏(2)
使用PagerSlidingTabStrip实现顶部导航栏
TabLayout实现顶部导航栏(1)
-
原文地址:https://www.cnblogs.com/hzcya1995/p/13318623.html
Copyright © 2020-2023
润新知