【发布时间】:2015-06-15 08:29:28
【问题描述】:
我只需要使用按位 & 运算符提取这些字节。 0xFF 是用于提取一个字节的十六进制掩码。对于 2 个字节,此代码工作正常:
#include <stdio.h>
int main()
{
unsigned int i = 0x7ee;
unsigned char c[2];
c[0] = i & 0xFF;
c[1] = (i>>8) & 0xFF;
printf("c[0] = %x \n", c[0]);
printf("c[1] = %x \n", c[1]);
return 0;
}
输出:
c[0] = ee;
c[1] = 7;
我应该怎么做才能让 4 个字节正常工作?
unsigned int i = 0x557e89f3;
unsigned char c[4];
我的代码:
unsigned char c[4];
c[0] = i & 0xFF;
c[1] = (i>>8) & 0xFF;
c[2] = (i>>16) & 0xFF;
c[3] = (i>>24) & 0xFF;
printf("c[0] = %x \n", c[0]);
printf("c[1] = %x \n", c[1]);
printf("c[2] = %x \n", c[2]);
printf("c[3] = %x \n", c[3]);
【问题讨论】:
-
和你现在做的差不多,但也移动了 16 位和 24 位。
-
与这个问题非常相似:stackoverflow.com/questions/29862863/… 我从来没有收到过更好的答案,但也许我的第一个解决方案对你来说已经足够了。
-
我的 16 和 24
c[2] = 0c[3] = 22输出无法正常工作 -
@BLUEPIXY 我添加我的代码
-
试试
unsigned long int而不是unsigned int