在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