C模擬實現點分十進位制IP轉換
阿新 • • 發佈:2019-02-19
宣告:本文在32位機器上測試無誤
點分十進位制
點分十進位制是計算機網路中的一個名詞,是一種網路地址的表示方法,每一組數字都是在0~255之間,每個組之間都是通過"."來進行分割的,本文主要是講32位的轉化,也就是IPv4地址的表示方法。(Ipv6同理可得)
實現原理
在計算機網路中,主要是將一個無符號的長整型轉化為點分十進位制的形式,比較好理解的方式是先將unsigned long型別轉化為對應的二進位制形式,然後每8位為一個分割,中間用“.”進行分隔就可以直接得到對應的點分十進位制形式。
圖示舉例:
程式碼實現:
#include<stdio.h>
struct IP
{
union UN
{
struct Ip
{
unsigned char b1;
unsigned char b2;
unsigned char b3;
unsigned char b4;
}ip;
unsigned long num;
}un;
};
int main()
{
unsigned long value = 1234567890;
struct IP myIp;
myIp.un.num = value;
printf("我的IP是:%d.%d.%d.%d\n",
myIp.un.ip.b1,
myIp.un.ip.b2,
myIp.un.ip.b3,
myIp.un.ip.b4);
system("pause");
return 0;
}
執行結果: