将多字节数据转换成单字节数据
1. #define BYTE0(dwTemp) ( *( (char *)(&dwTemp) + 0) ) 2. #define BYTE1(dwTemp) ( *( (char *)(&dwTemp) + 1) ) 3. #define BYTE2(dwTemp) ( *( (char *)(&dwTemp) + 2) ) 4. #define BYTE3(dwTemp) ( *( (char *)(&dwTemp) + 3) )
个人理解:
(char *)(&dwTemp) 取这个数据的地址,强转为char*类型
*(char *)(&dwTemp) 解引用,得到这个地址下的数据
试错:
999(十进制)的十六进制是 0x03E7
Byte0显示0xffffffe7 溢出了,0xE7 = 231
char类型变量是-128 ~ +127 231>127
使用要用无符号类型的 unsigned char (范围是0 ~ 255)
改过来就正确咯