c - 我们可以将 unsigned char 传递给 inet_ntop()
问题描述
#include <arpa/inet.h>
char buf[INET6_ADDRSTRLEN] = {};
int af = AF_INET;
unsigned char addr[4] = {0x7f, 0x0, 0x0, 0x1};
printf("Address: %s\n", inet_ntop(af, addr, buf, sizeof buf));
传递unsigned char
数组inet_ntop()
调用是否有效?上面的代码有效,但手册页说 API 在第二个参数中需要网络地址结构。
解决方案
我看到一种实现 unsigned long
用作struct in_addr addr
. 如果您在unsigned long
不是 4 个字节的系统上编译 - 我可以预见到麻烦。struct in_addr
如果一个系统对than有更严格的对齐要求char []
,我可以再次预见到麻烦。
最后,您似乎正在寻找确保这个弱代码在未来可以正常运行的保证。祝你好运。
推荐阅读
- python - 如何使用 Selenium 在 python 中修复日期选择器
- python - 在熊猫数据透视表中组织值列输出
- javascript - javascript - 在按钮中显示符号而不是文本
- apache-flink - flink中如何处理HyperLogLogPlus的ValueState
- amazon-web-services - AWS step 函数 - 调用 REST API
- ios - 在自定义演示样式视图控制器之上呈现全屏样式视图控制器,如何触发 viewDidDisappear?
- python - 如何使用管道获取 CountVectorizer 的词汇
- r - Stan 代码工作正常,但在 Linux 集群上失败
- google-apps-script - App script check if a column contains a certain word write date to specific column
- ios - 如何在swift 4中制作带有多行itemTitle的UITabBar