长长转换为字节数组

long long conversion into byte array

本文关键字:数组 字节数 转换 字节      更新时间:2023-10-16

我正在尝试将任何数据类型(实际上很长)放入字节/字符数组中并再次读出...但是出于任何原因,它适用于整数,但不适用于长整型?结果:值:15通道:4

int main(){
int chan=4;
char buffer1 [20];
long long time=20203023;
memcpy(buffer1, &time, sizeof(time));
printf("value: %lldn", buffer1[0]);
    memcpy(&buffer1[8], &chan, sizeof(chan));
    printf("channel: %d", *(&buffer1[8]));
    return 0;
}

溶液:

普林德夫是这里的坏人...我将数组的内容复制回长长,现在值解释得很好

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: %lldn", time_new);
    return 0;
}

结果:值:20203023

谢谢!!!

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

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