#include <algorithm>
using namespace std;
/** 反转数组
* @param arrayAddr 需要反转的数组地址(指针)。
* @param arrayLen 数组的长度。
* @return 反转后的数组地址;如果@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;
}
/** 反转字节序
* 按字节反转,没有处理奇偶长度问题。
* @param _value 需要反转的数据。
* @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;
}