#include <stdio.h>
#include <stdint.h>
uint32_t ipToUint(char* ip)
{
uint32_t result = 0;
int shift = 24;
int i;
for (i = 0; ip[i] != '\0'; i++)
{
if (ip[i] == '.') {
shift -= 8;
} else {
result |= (ip[i] - '0') << shift;
shift -= 8;
}
}
return result;
}
void printIP(uint32_t ip)
{
int i;
for (i = 24; i >= 0; i -= 8)
{
printf("%d", (ip >> i) & 0xFF);
if (i > 0) {
printf(".");
}
}
printf("\n");
}
void calculateSubnetMask(uint32_t ip, int networkBits)
{
uint32_t subnetMask = 0xFFFFFFFF;
subnetMask <<= (32 - networkBits);
printIP(subnetMask);
}
//主函数
int main()
{
char ip[16];
int networkBits;
printf("请输入IP地址:");
scanf("%s", ip);
printf("请输入网络位数:");
scanf("%d", &networkBits);
uint32_t ipAddress = ipToUint(ip);
calculateSubnetMask(ipAddress, networkBits);
return 0;
}
根据输入的ip地址和网络位数求子网掩码
最新推荐文章于 2024-08-10 15:48:22 发布