template <class T>
void CIntegerBytes::ToBytesT(const T& num, BYTE *lpBytes) const
{
size_t size(sizeof (T));
for (size_t i = 0; i < size; ++i)
lpBytes[i] = (BYTE) (num >> (( (size - 1) - i ) * 8));
}
template <class T>
void CIntegerBytes::FromBytesT(const BYTE *lpBytes, T& num) const
{
size_t size(sizeof (T));
BYTE byMask(0xFF);
T temp(0);
num = 0;
for (size_t i = 0; i < size; ++i)
{
num <<= 8;
temp = (T) (lpBytes[i] & byMask);
num |= temp;
}
}
注意只支持整数转换,转换类型如下
#ifndef _WINDOWS_
typedef unsigned char BYTE;
typedef short SHORT;
typedef unsigned short USHORT;
typedef int INT;
typedef unsigned int UINT;
typedef long LONG;
typedef unsigned long ULONG;
typedef long long LONGLONG;
typedef unsigned long long ULONGLONG;
#endif
short -100(0x9CFF)转换后为(0xFF9C)