如何将短整数视为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);