Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c语言中将int转换为字节数组_C_Arrays - Fatal编程技术网

在c语言中将int转换为字节数组

在c语言中将int转换为字节数组,c,arrays,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来做这个 提前谢谢 对于(i=4;i--;k[i]=p%100,p/=100) 这对我来说是个奇怪的问题,但还行。以下是我应该做的: 复制p的值,以便以后可以使用(我假设此转换不打算更

我想将
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来做这个


提前谢谢

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

这对我来说是个奇怪的问题,但还行。以下是我应该做的:

  • 复制
    p
    的值,以便以后可以使用(我假设此转换不打算更改其值)
  • 使用模运算得到最后两位数字
  • 剪掉
    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;
    }
    

    没有直接转换。您必须为此编写代码。如果
    p>9999999
    怎么办?一个想法(效率极低)是将数字转换为字符串,然后将字符串分成4个(字符串)部分,然后再将每个部分转换回。首先将
    int
    转换为
    string
    ,然后根据您的请求对其进行解析。“我想将int转换为char[4],其中char[4]中的每个字节都包含一个十进制值2”char k[4]={2,2,2}??请你澄清一下你的意思好吗?你能具体一点吗?考虑到
    intk[5](一个额外的(最后一个)元素),这就完成了(在所有更正之后)+1.对不起;打电话。语法也很好。不处理p<0。不处理p>9999999。未声明(i)。这是你的问题吗?我改变了循环顺序。还有别的吗?哦,是的。我已经在测试代码中包含了它们,但这里没有。谢谢你指出这根本不是一个奇怪的手术。这就是所谓的代表性,我还没想过。好啊有道理。
    
    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