如何将网络掩码转换为网络前缀长度?

big*_*ato -4 c networking

我正在做一些编程,我想将网络掩码转换为网络前缀长度.

例如255.255.255.0 ----> 24.

最后我写了一些代码来做到这一点.

const char *network = "255.255.255.0";
int n = inet_addr(netowrk);
int i = 0;
while (n > 0) {
    n = n << 1;
    i++;
Run Code Online (Sandbox Code Playgroud)

}

我将是网络数量

小智 6

你应该首先尝试编译你的代码,它可以帮助你很多.由于您错误输入变量名称"netowrk",因此存在编译错误

要计算前缀而不是左移,你应该尝试右移,而不是使用inet_addr尝试inet_pton().

有关更多详细信息,请查看IPv4后到十进制的不同值?

在这里你可以查看代码:

int main()
{
    const char *network = "255.255.255.0";
    int n;
    inet_pton(AF_INET, network, &n);
    int i = 0;

    while (n > 0) {
            n = n >> 1;
            i++;
    }

    printf("network = %s, suffix = %d\n", network, i);
}
Run Code Online (Sandbox Code Playgroud)