需求:如用4个字节byte b[4]表示整型数值i,要求将i的值转换到byte b[4]中;
分析:简单而高效的方法是用位运算来取值;byte b[4]能表示的整型值范围是[0, 4294967295],需要用类型unsigned int来匹配;
实现:
分析:简单而高效的方法是用位运算来取值;byte b[4]能表示的整型值范围是[0, 4294967295],需要用类型unsigned int来匹配;
方法:使用以下四个宏即可满足要求
#define LOWORD(l) ((WORD)((DWORD_PTR)(l) & 0xffff))
#define HIWORD(l) ((WORD)((DWORD_PTR)(l) >> 16))
#define LOBYTE(w) ((BYTE)((DWORD_PTR)(w) & 0xff))
#define HIBYTE(w) ((BYTE)((DWORD_PTR)(w) >> 8))
实现:
unsigned int i = 12345; // 原始整型数值
byte b[4] = {0}; // 目标字符数组
b[0] = HIBYTE(HIWORD(nHex)); // 宏转换
b[1] = LOBYTE(HIWORD(nHex));
b[2] = HIBYTE(LOWORD(nHex));
b[3] = LOBYTE(LOWORD(nHex));