长时间转换为字节数组

时间:2015-03-11 14:45:08

标签: c++ c arrays

我正在尝试将任何数据类型(实际上很长)放入一个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, &times, sizeof(times));

    memcpy(&time_new, buffer1, sizeof(times));
    printf("value: %lld\n", time_new);

    return 0;
}

结果:价值:20203023

谢谢!!!

1 个答案:

答案 0 :(得分:1)

程序行为未定义。 printf格式说明符必须与传入的类型匹配。buffer1[0]char类型,%lldlong long

你的memcpy方法很好。作为数组的buffer1将占用连续的内存,因此可以很好地接收与timechan相关联的内存副本。