gpt4 book ai didi

c - 在C中对int数组进行序列化和反序列化

转载 作者:行者123 更新时间:2023-11-30 20:31:32 27 4
gpt4 key购买 nike

我有以下伪代码:

uint32_t int_array[500] = initialize(); //initialize fills array with data
serializeIntArray("./dump.raw", int_array);


另一个程序:

uint32_t *int_array_new;
int size = deserializeIntArray("./dump.raw", int_array_new);


serializeIntArraydeserializeIntArray如何实现?

我尝试使用以下代码将数组转换为字符串:

char *int_array_to_string(uint32_t *src, size_t size)
{
size_t numInt = size * sizeof(uint32_t);
char *intAsChars = (char *)src;
char *chars = malloc(numInt + sizeof(char));
chars[size] = '\0';
memcpy(chars, intAsChars, numInt + sizeof(char));
return chars;
}

uint32_t *string_to_int_array(char *src, size_t size)
{
size_t numInt = size * sizeof(char);
uint32_t *charAsInt = (uint32_t *)src;
uint32_t *ints = malloc(numInt);
memcpy(ints, charAsInt, numInt);
return ints;
}


但是它们产生不同的输出。

ps。在嵌入式系统中执行此操作,因此除libc外没有其他库。

ps。序列化格式需要为二进制以避免开销。

最佳答案

只需(f)编写:

#include <stdint.h>
#include <stdio.h>
int serialize(char const*Fnm, void const*Data, size_t Sz)
{
FILE *f;
if(!(f=fopen(Fnm, "wb")))
return -1;
if(Sz!=fwrite(Data,1,Sz,f))
{ fclose(f); return -1; }
if(EOF==fclose(f)) return -1;
return 0;
}
int main()
{
uint32_t int_array[500]={0};
if(0>serialize("./dump.raw", int_array, sizeof int_array))
{ perror(0); return 1; }
return 0;
}

关于c - 在C中对int数组进行序列化和反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50496489/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com