1. 程式人生 > >將整型數值存入到byte陣列中

將整型數值存入到byte陣列中

需求:如用4個位元組byte b[4]表示整型數值i,要求將i的值轉換到byte b[4]中;
分析:簡單而高效的方法是用位運算來取值;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));