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

📄 xhexcode.cpp

📁 BCB的学习资料
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------


#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 + -