將整型數值存入到byte陣列中
阿新 • • 發佈:2019-02-12
需求:如用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));