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