在此处显示的位移示例中 :
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));
三个问题:
- 为什么是 (int) 而不是 (unsigned char)?我用 unsigned char 试过了,它似乎编译得很好。
- 0XFF 是必要的吗?新的位移位不是 0,因为 Wikipedia 说 C 使用逻辑位移和逻辑位移位移 0?(编辑:至少在具有 >> 24 的情况下似乎没有必要?)
- 我不能只做一个 memcpy() 将 longInt 复制到 unsigned char 缓冲区吗?不是因为字节序的问题吗?还有其他原因吗?