1. 程式人生 > >c語言 利用聯合和結構體將IP地址進行列印

c語言 利用聯合和結構體將IP地址進行列印

       在每一個計算機中都有他自己的IP地址,而IP地址是如何在計算機中儲存的是一直以來我們都不知道的。

       在計算機中,IP地址的存放是由10進位制陣列組成的,而計算機將IP地址呈現給我們時則是以點分十進位制表示的。

       例如  IP地址為 57.163.109.40  ,其實他在計算機中儲存的是  678273849,而計算機就是利用這個十進位制數字將IP地址以點分十進位制進行表示,列印在我們的面前。

       在聯合體內部將十進位制數字儲存起來,得到的是一個佔有四個位元組的整形,而最終要將每個位元組用點隔開將每個位元組中的二進位制數字打印出來,形成我們所看見的形式。在聯合體中,儲存一個int整型和四個char型別時,只開闢四個位元組的空間,而這時int和char其實是公用這四個位元組的空間,char就是int,int就是char,所以通過ji將一個數存進int型別後,再將這個數以char型別能拿來,這時拿出來的就是每個位元組的數了,然後又以10進位制進行列印,讓IP地址呈現在我們眼前。

       當然,打印出來的IP地址會存在大小端的問題,視情況而定。

#include<stdio.h>
union Ip
{
	unsigned int num;
	struct
	{
		unsigned char c1;
		unsigned char c2;
		unsigned char c3;
		unsigned char c4;
	}ip;
};
int main()
{
	union Ip my_ip;
	my_ip.num = 678273849;
	printf("%d.%d.%d.%d", my_ip.ip.c1, my_ip.ip.c2, my_ip.ip.c3, my_ip.ip.c4);
	system("pause");
		return 0;
}