📄 xhexcode.cpp
字号:
//---------------------------------------------------------------------------
#pragma hdrstop
#include "XHexCode.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
namespace zdhsoft
{
/*
////////////////////////////////////////////////////////////////////////////////
[Name]Encode
[Title]将数据编码成十六进制串
////////////////////////////////////////////////////////////////////////////////
[Param]
<const void *>srcData 源数据
<int>DataCount 源数据的字节数
<XByteBuffer &>OutBuffer 16进制编码后,存放16进制编码的缓冲区,使用前会被清空
<bool default = false>bCase 生成编码大小标志,false表示小写,true表示大写
[Return]
void
[Exception]
EOutOfMemory 如果申请缓冲区失败,那么则抛出该异常
[Description]
将数据编码成十六进制串,并存放到指写的缓冲区中。
[Version]1.0
[Author]Rex Winter
[Date]2005-6-24
////////////////////////////////////////////////////////////////////////////////
*/
void XHexCode::Encode(const void * srcData,int DataCount,XByteBuffer & OutBuffer,bool bCase)
{
OutBuffer.Clear();
if( DataCount <= 0 ) return; //if nothing data then return
OutBuffer.ensureCapacity( DataCount * 2 );
const XByte * btData = (const XByte *)srcData;
for( int i=0; i<DataCount; i++)
{
__EncodeToBuffer(*btData,OutBuffer,bCase);
btData++;
}
}
/*
////////////////////////////////////////////////////////////////////////////////
[Name]Encode
[Title]将数据编码成十六进制串
////////////////////////////////////////////////////////////////////////////////
[Param]
<const XByteBuffer &>InBuffer 源数据缓冲区
<XByteBuffer &>OutBuffer 16进制编码后,存放16进制编码的缓冲区,使用前会被清空
<bool default = false>bCase 生成编码大小标志,false表示小写,true表示大写
[Return]
void
[Exception]
EOutOfMemory 如果申请缓冲区失败,那么则抛出该异常
[Description]
将数据编码成十六进制串,并存放到指写的缓冲区中。
[Version]1.0
[Author]Rex Winter
[Date]2005-6-24
////////////////////////////////////////////////////////////////////////////////
*/
void XHexCode::Encode(const XByteBuffer & InBuffer,XByteBuffer & OutBuffer,bool bCase)
{
Encode(InBuffer.Data(),InBuffer.GetLength(),OutBuffer,bCase);
}
/*
////////////////////////////////////////////////////////////////////////////////
[Name]Encode
[Title]将数据编码成十六进制串
////////////////////////////////////////////////////////////////////////////////
[Param]
<const AnsiString &>srcString 源字符串
<XByteBuffer &>OutBuffer 16进制编码后,存放16进制编码的缓冲区,使用前会被清空
<bool default = false>bCase 生成编码大小标志,false表示小写,true表示大写
[Return]
void
[Exception]
EOutOfMemory 如果申请缓冲区失败,那么则抛出该异常
[Description]
将数据编码成十六进制串,并存放到指写的缓冲区中。
[Version]1.0
[Author]Rex Winter
[Date]2005-6-24
////////////////////////////////////////////////////////////////////////////////
*/
void XHexCode::Encode(const AnsiString & srcString,XByteBuffer & OutBuffer,bool bCase)
{
Encode(srcString.c_str(),srcString.Length(),OutBuffer,bCase);
}
/*
////////////////////////////////////////////////////////////////////////////////
[Name]Encode
[Title]将数据编码成十六进制串,并返回该串
////////////////////////////////////////////////////////////////////////////////
[Param]
<const XByteBuffer &>InBuffer 源数据缓冲区
<bool default = false>bCase 生成编码大小标志,false表示小写,true表示大写
[Return]
<AnsiString> 返回数据的16进制字符串
[Exception]
EOutOfMemory 如果申请缓冲区失败,那么则抛出该异常
[Description]
将数据编码成十六进制串,并返回该串。
[Version]1.0
[Author]Rex Winter
[Date]2005-6-24
////////////////////////////////////////////////////////////////////////////////
*/
AnsiString XHexCode::Encode(const XByteBuffer & InBuffer,bool bCase)
{
XByteBuffer TmpBuffer;
TmpBuffer.ensureCapacity( InBuffer.GetLength() * 2 + 1 );
Encode(InBuffer.Data(),InBuffer.GetLength(),TmpBuffer,bCase);
TmpBuffer.AppendChar(0);
return (const char *)TmpBuffer.Data();
}
/*
////////////////////////////////////////////////////////////////////////////////
[Name]Encode
[Title]将数据编码成十六进制串,并返回该串
////////////////////////////////////////////////////////////////////////////////
[Param]
<const void * >srcData 源数据
<int>DataCount 源数据的字节数
<bool default = false>bCase 生成编码大小标志,false表示小写,true表示大写
[Return]
<AnsiString> 返回数据的16进制字符串
[Exception]
EOutOfMemory 如果申请缓冲区失败,那么则抛出该异常
[Description]
将数据编码成十六进制串,并返回该串。
[Version]1.0
[Author]Rex Winter
[Date]2005-6-24
////////////////////////////////////////////////////////////////////////////////
*/
AnsiString XHexCode::Encode(const void * srcData,int DataCount,bool bCase)
{
if( DataCount <=0 ) return "";
XByteBuffer TmpBuffer;
TmpBuffer.ensureCapacity( DataCount * 2 + 1 );
Encode(srcData,DataCount,TmpBuffer,bCase);
TmpBuffer.AppendChar(0);
return (const char *)TmpBuffer.Data();
}
/*
////////////////////////////////////////////////////////////////////////////////
[Name]Encode
[Title]将数据编码成十六进制串,并返回该串
////////////////////////////////////////////////////////////////////////////////
[Param]
<const AnsiString &>srcString 源数据字符串
<bool default = false>bCase 生成编码大小标志,false表示小写,true表示大写
[Return]
<AnsiString> 返回数据的16进制字符串
[Exception]
EOutOfMemory 如果申请缓冲区失败,那么则抛出该异常
[Description]
将数据编码成十六进制串,并返回该串。
[Version]1.0
[Author]Rex Winter
[Date]2005-6-24
////////////////////////////////////////////////////////////////////////////////
*/
AnsiString XHexCode::Encode(const AnsiString & srcString,bool bCase)
{
XByteBuffer TmpBuffer;
TmpBuffer.ensureCapacity( srcString.Length() * 2 + 1);
Encode(srcString,TmpBuffer,bCase);
TmpBuffer.AppendChar(0);
return (const char *)TmpBuffer.Data();
}
/*
////////////////////////////////////////////////////////////////////////////////
[Name]Decode
[Title]将16进制数据串解码,并放到缓冲区中
////////////////////////////////////////////////////////////////////////////////
[Param]
<const void *>srcData 源数据,将被解码的16进制串数据
<int>DataCount 数据源的字节数
<XByteBuffer &>OutBuffer 解码后,存放数据组的缓冲区
<bool default = true>bBreakByError 表示遇到错误非十六进制字符是否退出返回,true则表示退出返回,
false则将数据视为0继续解码
[Return]
void
[Exception]
EOutOfMemory 如果申请缓冲区失败,那么则抛出该异常
[Description]
将16进制数据串解码,并放到缓冲区中。
[Version]1.0
[Author]Rex Winter
[Date]2005-6-24
////////////////////////////////////////////////////////////////////////////////
*/
void XHexCode::Decode(const void * srcData,int DataCount,XByteBuffer & OutBuffer,bool bBreakByError)
{
OutBuffer.Clear();
if( DataCount <= 0 ) return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -