巧妙運用大小端與共用體

2021-09-29 22:43:19 字數 916 閱讀 2465

今天遇到乙個問題

題目描述:

實現函式 unsigned int ipanel_parse_ip_addr(const char*ip)

測試用例:

unsigned int ip addr=ipanel_parse_ip_addr("192.168.10.1");

printf("%x\n",ip_addr);

請在程式關鍵步驟增加必要注釋。

分析:

首先在函式中ipanel_parse_ip_addr要將點分十進位制字串中的數字解析出來,然後將其儲存乙個大小為4的共用體中,將整數轉換為ascii碼,因為char只能到127,如果ip中的數字大於了127,就要用unsigned char,共用體中定義乙個unsigned char [4]的陣列,以及乙個int型變數,將解析出來的數字轉換為ascii的值,然後儲存到unsigned char [4]陣列中,因為linux和windows的機器都是小端模式的,所以第乙個值要儲存在下標為3,第四個值要儲存在0下標,然後再將共用體中的int型變數a以十六進製制輸出,就可以得到結果。

要點:

將乙個int型整數轉換為這個值的ascii碼:

int i=192

;unsigned

char c=unsigned char(i);

程式如下:

union un

myun;

unsigned

int ipnel_parse_ip_addr(const

char*ip)

return

myun.a;

}int

main()

執行結果:

結構體與共用體

1.定義乙個機構體的形式 struct 結構名 2.定義結構體變數 變數名表列 變數名表列 3.結構體成員的表示方法 結構變數名.成員名 例如 boy1.num 如果成員本身又是乙個結構則必須逐級找到最低階的成員才能使用。例如 boy1.birthday.month 4.結構體陣列 方法和結構變數相...

結構體與共用體

結構體的作用 在網路協議 通訊控制 嵌入式系統的c c 程式設計中,我們經常要傳送的不是簡單的位元組流 char型陣列 而是多種資料組合在一起的乙個整體。其表現形式是乙個結構體。簡單來說,結構體就是用來封裝資料的。結構體的定義 struct student struct student stu st...

結構體與共用體

結構體和共用體 聯合體 是自定義的資料型別,常用於處理非數值型資料,使用如 鍊錶 佇列 樹等。1.結構體定義 結構體是用其他型別構造出來的資料型別。結構體型別如下 struct student 定義乙個結構體變數如下 struct student stu1 stu1.age 32 stu1.name...