gpt4 book ai didi

c - 将 uint64_t 数据类型存储在 C union 中存在的 char 类型字段中

转载 作者:太空宇宙 更新时间:2023-11-04 04:08:08 25 4
gpt4 key购买 nike

您好,我有以下 union 体,它是更大结构的一部分,我想在此 union 体中存储一个 uint64_t(64 位大小)数据。但是我想通过访问 id_data 字段来存储它,因为其他字段不足以容纳完整的 uint64_t。但我不知道如何将我的 uint64_t 数据分配到这个 id_data 字段中。

我知道如何从该字段读取 uint64_t 数据。但不知道如何为其赋值。

我们将不胜感激。

谢谢。

union {
struct id_ts { /* ICMP Timestamp */
uint32_t otime; /* Originate */
uint32_t rtime; /* Receive */
uint32_t ttime; /* Transmit */
} id_ts;
struct id_ip {
struct xyz_abc idi_ip;
/* options and then 64 bits of data */
} id_ip;
struct ra_addr id_radv;
uint32_t id_mask;
char id_data[1];
} icmp_nnn;

最佳答案

你可以使用memcpy:

uint64_t val;
memcpy((void*)&icmp_nnn.id_data[0], (void*)&val, sizeof(val));

您并没有真正将它分配给 id_data 成员。只需将 memcpy 放入 union 使用的内存空间即可。 id_data[0] 将对应于 unionstart

关于c - 将 uint64_t 数据类型存储在 C union 中存在的 char 类型字段中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3209003/

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