在c中将int转换为bytes数组

时间:2018-01-03 10:44:16

标签: c arrays

我想将int转换为char[4],其中char[4]中的每个字节都包含小数值2.所以在以下示例中:

int p = 2999999;

p转换为与k相同的数组,其中k是通过以下方式构建的:

char k[4];
k[0] = 2;
k[1] = 99;
k[2] = 99;
k[3] = 99;

我怎样才能在C中这样做?

提前致谢!

2 个答案:

答案 0 :(得分:5)

对我来说这是一个奇怪的问题但是没问题。这就是我要做的事情:

  1. 复制p的值,以便以后可以使用(我假设此转换不打算更改其值)。
  2. 使用模运算获得最后2位数字
  3. 删除了p的副本,以便能够阅读下两位数字。
  4. 如此完整的答案是:

    #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;
    }
    

    为了理智输出:

    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
    

答案 1 :(得分:1)

for(i = 4; i--; k [i] = p%100,p / = 100);