gpt4 book ai didi

c++ - 使用 memcpy 将 1KB 字节数组复制到单个变量。寻找更聪明的方法

转载 作者:行者123 更新时间:2023-11-28 07:27:00 25 4
gpt4 key购买 nike

我有一个大小为 1024 的字节数组 arr 和 4 个变量,我想将数组 arr 的开头复制到其中。稍后我想从数组中读取更多数据。实现这一目标的最佳和最具活力的方法是什么?目前我只是静态复制字节。也许是自动设置为当前阅读位置的指针?谢谢!

unsigned char arr[1024];
unsigned char field1 = 0;
unsigned int field2 =0;
unsigned int field3 = 0;
unsigned char field4 = 0;

memcpy(&field1, arr, sizeof(field1));
memcpy(&field2, arr[1], sizeof(field2));
memcpy(&field3, arr[5], sizeof(field3));
memcpy(&field4, arr[9], sizeof(field4));

最佳答案

你的意思是这样的:

  char *curr = arr; 

memcpy(&field1, curr, sizeof(field1));
curr += sizeof(field1);
memcpy(&field2, curr, sizeof(field2));
curr += sizeof(field2);
...

当然,你可以更进一步,做一个表格:

struct Table
{
void *field;
size_t size;
} table =
{
{ &field1, sizeof(field1) },
{ &filed2, sizeof(field2) },
...
};

curr = arr;
for(int i = 0; i < sizeof(table)/sizeof(table[0]); i++)
{
memcpy(table[i].field, curr, table[i].size);
curr += table[i].size;
}

关于c++ - 使用 memcpy 将 1KB 字节数组复制到单个变量。寻找更聪明的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18588107/

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