gpt4 book ai didi

使用 strtol() 将 IP 地址从十六进制转换为十进制

转载 作者:行者123 更新时间:2023-11-30 15:09:32 25 4
gpt4 key购买 nike

我放了一个IP address从框架到结构:

unsigned char destination_address[4];

在我的主程序中,我加载一个结构:

struct ipv4 naglowek_ipv4;
upakuj_ipv4(bufor_eth_ipv4, &naglowek_ipv4);

并尝试以“人类可读的格式”显示此内容:

printf("Destination Adress: %ld.%ld.%ld.%ld\n",
strtol(naglowek_ipv4.destination_address[0],NULL,16),
strtol(naglowek_ipv4.destination_address[1],NULL,16),
strtol(naglowek_ipv4.destination_address[2],NULL,16),
strtol(naglowek_ipv4.destination_address[3]));

这没有按我认为应该的方式显示。有谁知道为什么吗?

最佳答案

destination_address 不是字符串,它只是四个字节的数组。因此,简化您的调用:

printf("Destination Adress: %d.%d.%d.%d\n",
naglowek_ipv4.destination_address[0],
naglowek_ipv4.destination_address[1],
naglowek_ipv4.destination_address[2],
naglowek_ipv4.destination_address[3]);

您会注意到,如果您包含了 strtol 的声明(而且您没有向最后一次调用传递足够的参数):

#include <stdlib.h> /* provides strtol() function */

关于使用 strtol() 将 IP 地址从十六进制转换为十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36632221/

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