#include <algorithm>
using namespace std;
/** 反轉(zhuǎn)數(shù)組
* @param arrayAddr 需要反轉(zhuǎn)的數(shù)組地址(指針)。
* @param arrayLen 數(shù)組的長度。
* @return 反轉(zhuǎn)后的數(shù)組地址;如果@p arrayLen<=0,則返回NULL。
* @author Fongluo
* @date 2008/07/09 10:00
**/
template<typename ARRAY_ADDRESS >
ARRAY_ADDRESS reversArray(ARRAY_ADDRESS arrayAddr, size_t arrayLen)
{
if(arrayLen <= 0)
return NULL;
ARRAY_ADDRESS pStart = arrayAddr;
ARRAY_ADDRESS pEnd = pStart + (arrayLen - 1);
for(; (pStart!=pEnd) && (pEnd<pStart); pStart++, pEnd--)
{
swap((*pStart), (*pEnd));
}
return arrayAddr;
}
/** 反轉(zhuǎn)字節(jié)序
* 按字節(jié)反轉(zhuǎn),沒有處理奇偶長度問題。
* @param _value 需要反轉(zhuǎn)的數(shù)據(jù)。
* @author Fongluo
* @date 2008/06/06 10:00
**/
template<typename VALUE_TYPE >
VALUE_TYPE reversByteOrders(VALUE_TYPE _value)
{
size_t stValueLen = sizeof(_value);
reversArray<unsigned char *>((unsigned char *)&_value, stValueLen);
return _value;
}