我正在尝试将任何数据类型(实际上很长)放入一个byte / char数组并再次读出它...但是由于任何原因它对整数有效但不长有长? 结果: 价值:15 频道:4
int main(){
int chan=4;
char buffer1 [20];
long long time=20203023;
memcpy(buffer1, &time, sizeof(time));
printf("value: %lld\n", buffer1[0]);
memcpy(&buffer1[8], &chan, sizeof(chan));
printf("channel: %d\0", *(&buffer1[8]));
return 0;
}
解决方案:
printf是这里的坏人......我把数组的内容记录回很长的时间,现在很好地解释了这个值
int main() {
int chan = 22;
char buffer1[20];
long long times = 20203023;
long long time_new = 0;
memcpy(buffer1, ×, sizeof(times));
memcpy(&time_new, buffer1, sizeof(times));
printf("value: %lld\n", time_new);
return 0;
}
结果:价值:20203023
谢谢!!!
答案 0 :(得分:1)
程序行为未定义。 printf
格式说明符必须与传入的类型匹配。buffer1[0]
是char
类型,%lld
是long long
。
你的memcpy
方法很好。作为数组的buffer1
将占用连续的内存,因此可以很好地接收与time
或chan
相关联的内存副本。