gpt4 book ai didi

c++ - 如何将addr_in结构分配给uint8_t数组

转载 作者:行者123 更新时间:2023-12-02 10:07:57 25 4
gpt4 key购买 nike

考虑以下代码片段:

uint8_t addr[4];
inet_pton(AF_INET, args.gtp_bind_addr.c_str(), addr);

函数 inet_pton()采用点分十进制形式的IP地址( args.gtp_bind_addr.c_str()),将其转换为 in_addr struct并将此结构复制到 addr

现在,假设给了我一个 sockaddr_in struct,我们称它为 help。我想将help的 addr_in条目写入到 addr数组中。只需通过以下命令就能做到这一点: addr[0] = help->sin_addr

这似乎有点错误,因为我现在仅将 sin_addr分配给 addr[0],但是我希望它填充整个 addr数组。

最佳答案

help.sin_addrstruct in_addr,这是一个包装单个32位整数的类类型。

可以分配struct in_addr(从另一个struct in_addr)。但是,它不是uint8_t(怎么可能),所以您建议的分配永远不会起作用。如果您尝试编写这样的程序,编译器会告诉您这一点。

因此,不,这没有多大意义。问题是您选择了在不需要时使用带有inet_pton的数组。您需要做的就是提供另一个struct in_addr来填充:

struct in_addr addr;
inet_pton(AF_INET, args.gtp_bind_addr.c_str(), static_cast<void*>(&addr));

现在,您要执行的作业既有效又完全直观。

可是等等!那为什么还要打扰中间人呢?只需直接阅读您的目标:
inet_pton(AF_INET, args.gtp_bind_addr.c_str(), static_cast<void*>(&help->sin_addr));

任务完成。

关于c++ - 如何将addr_in结构分配给uint8_t数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59251399/

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