十六进制IP转换成10进制IP
#include <stdio.h>
#include <stdlib.h>
int main()
{
unsigned long input_IP;
unsigned int BeginByte,MidByte,ThirdByte,EndByte;
unsigned int_rotate = 0x07;
printf("****************************************\n");
printf("***** ******\n");
printf("****************************************\n");
printf("please enter IP:");
scanf("%lx",&input_IP);
BeginByte = (input_IP>>24)&~(~0<<8);//获取 IP 地址最高位
//(~0<<8) 11111111111111111111111100000000
//~(~0<<8) 00000000000000000000000011111111
//input_IP>>24 (后24位)(前八位)
//(input_IP>>24)&~(~0<<8) 000000000000000000000000(11111111)
//结果只保留了前八位
MidByte = (input_IP>>16)&~(~0<<8);//获取 IP 地址中间段
//同理
//~(~0<<8) 00000000000000000000000011111111
//input_IP>>16 (后16位)(前16位)
ThirdByte = (input_IP>>8)&~(~0<<8);//获取 IP 地址第三段
EndByte = input_IP &~(~0<<8);//最后一段
printf("****************************************\n");
printf(" %d.%d.%d.%d.\n", BeginByte,MidByte,ThirdByte,EndByte);
system("pause");
return 0;
}
运行结果