1. 程式人生 > >C模擬實現點分十進位制IP轉換

C模擬實現點分十進位制IP轉換

宣告:本文在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;
}

執行結果: