如何转换十六进制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;
}