在c中将int转换为bytes数组

Vis*_*Vis -3 c arrays

我想将inta 转换char[4]char[4]包含十进制值2的每个字节.所以在下面的例子中:

int p = 2999999;
Run Code Online (Sandbox Code Playgroud)

转换p到相同的阵列k,其中k通过被构造:

char k[4];
k[0] = 2;
k[1] = 99;
k[2] = 99;
k[3] = 99;
Run Code Online (Sandbox Code Playgroud)

我怎么能在C中这样做?

提前致谢!

gon*_*zor 5

对我来说这是一个奇怪的问题,但还可以.这就是我要做的事情:

  1. 复制值,p以便以后可以使用(我假设此转换不打算更改其值).
  2. 使用模运算得到最后2位数
  3. 减少副本,p以便能够读取下两位数字.

如此完整的答案是:

#include <stdio.h>

int main()
{
    int p = 2999999;
    char k[4];
    int p_copy = p;
    int i;
    for(i = 3; i >=0; i--)
    {
            k[i] = p_copy % 100;
            p_copy /= 100;
    }
    for(i = 0; i < 4; i++)
            printf("k[%d]: %d\n",i, k[i]);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为了理智输出:

gonczor@wiktor-papu:~/tmp$ gcc test.c -o test
gonczor@wiktor-papu:~/tmp$ ./test
k[0]: 2
k[1]: 99
k[2]: 99
k[3]: 99
Run Code Online (Sandbox Code Playgroud)