如何将短整数视为C中的元素数组?

如何将短整数视为C中的元素数组?,c,arrays,byte,C,Arrays,Byte,所以我把一个整数存储为短整数。比如说: short i = 3000; 以二进制形式表示的是: 0011 0000 0000 0000 我被告知我可以将其视为两个元素的数组,其中每个元素基本上是一个字节,因此: i[0] = 0011 0000 i[1] = 0000 0000 我如何才能做到这一点?您可以这样做(假设short是2个字节) 现在x[0]将是10111000,如果此代码在little endian机器上运行,则x[1]00001011。如果是big endian机器,则相反

所以我把一个整数存储为短整数。比如说:

short i = 3000;
以二进制形式表示的是:

0011 0000 0000 0000
我被告知我可以将其视为两个元素的数组,其中每个元素基本上是一个字节,因此:

i[0] = 0011 0000
i[1] = 0000 0000
我如何才能做到这一点?

您可以这样做(假设
short
是2个字节)

现在
x[0]
将是10111000,如果此代码在little endian机器上运行,则
x[1]
00001011。如果是big endian机器,则相反


顺便说一句,3000的二进制表示法看起来是错误的

是谁告诉你的,在什么背景下?有一个简短的答案,但在不知道上下文的情况下,它可能会让你更加困惑。查看类型转换。假设“short”是4字节长是不好的。这取决于架构/操作系统。3000不是二进制的000010110111000吗?对不起,请原谅。是的,short至少应该是2个字节。
unsigned char[sizeof(short)]
要删除该假设。@zwol:在这种情况下,我还必须更改memcpy参数,我将这样离开,希望OP至少能知道。
short i = 3000; // 3000 in Binary is: 00001011 10111000
unsigned char x[2] = {0};
memcpy(x, &i, 2);