您的位置:首页 > 编程语言 > C语言/C++

C++ 整数与字节相互转换(X86)

2011-05-03 09:44 471 查看
template 
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 
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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: