如何转换十六进制ip(例如42477f35),并使其输出正确的十进制ip(在前面的示例中,正确的结果是66.71.127.53)?
我希望它将十六进制ip作为字符串输入,然后将正确的结果也作为字符串输出,这样我就可以在C代码的其他地方使用它。
我不是C语言的专家,所以如果你们能帮我,我将不胜感激。

最佳答案

这是一种可能性:

#include <stdio.h>

int ip_hex_to_dquad(const char *input, char *output, size_t outlen)
{
    unsigned int a, b, c, d;

    if (sscanf(input, "%2x%2x%2x%2x", &a, &b, &c, &d) != 4)
        return -1;

    snprintf(output, outlen, "%u.%u.%u.%u", a, b, c, d);
    return 0;
}

07-24 09:46