#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;
}