在所示的位移示例中 here:
unsigned long int longInt = 1234567890;
unsigned char byteArray[4];
// convert from an unsigned long int to a 4-byte array
byteArray[0] = (int)((longInt >> 24) & 0xFF) ;
byteArray[1] = (int)((longInt >> 16) & 0xFF) ;
byteArray[2] = (int)((longInt >> 8) & 0XFF);
byteArray[3] = (int)((longInt & 0XFF));
三个问题:
答案 0 :(得分:2)
<强> 1 强>
((longInt >> 24) & 0xFF)
表达式的类型为unsigned long int
。通过转换为int
,表达式首先转换为int
,然后转换为unsigned char
。如果您不转换为int
,则表达式不会首先转换为int
。两种情况没有区别,演员阵容是多余的。
<强> 2 强>
0xff
不是必需的。转换为unsigned char
实际上执行相同的操作。
第3 强>
您可以使用memcpy
,但它不可移植,因为它取决于系统的字节顺序。如果系统是大端或小端,它将给出不同的结果,而按位移位解将给出相同的结果。