C语言:8位、16位、32位数据转换

8位转16位

将2个8位数据high、low合成一个16位数据data_u16:

data_u16 = (high<<8) | low;

16位转8位

将一个16位数据data_u16拆分成2个8位数据high、low:

	high = (data_u16 >> 8) & 0xff;	 	//高8位
	low = 	data_u16 	   & 0xff; 		//低8位

8位转32位

将4个8位数据data_u8[4]合成一个32位数据data_u32:

data_u32 = (data_u8[0]<<24)|(data_u8[1]<<16)|(data_u8[2]<<8)|data_u8[3];

32位转8位

将一个32位数据data_u32拆分成4个8位数据data_u8[4]:

data_u8[0] = (data_u32 >> 24) & 0xff;	 
data_u8[1] = (data_u32 >> 16) & 0xff; 	   
data_u8[2] = (data_u32 >> 8)  & 0xff;
data_u8[3] =  data_u32        & 0xff;
//高位在前,低位在后

16位转32位

将2个16位数据data_u16[2]合成一个32位数据data_u32:

data_u32 = (data_u16[0]<<16)|data_u16[1];

32位转16位

将一个32位数据data_u32拆分成2个16位数据data_u16[2]:

data_u16[0] = (data_u32 >> 16) & 0xffff;	 //高16位
data_u16[1] =  data_u32        & 0xffff; 	 //低16位

猜你喜欢

转载自blog.csdn.net/MQ0522/article/details/110136850