字串轉換成位址

2021-07-06 09:15:31 字數 3536 閱讀 7645

功能是將乙個點分十進位制的ip轉換成乙個長整數型數(u_long型別)

原型:in_addr_t inet_addr(const char *cp);

引數:字串,乙個點分十進位制的ip位址

返回值

如果正確執行將返回乙個無符號長整數型數。如果傳入的字串不是乙個合法的ip位址,將返回inaddr_none。

標頭檔案:winsock2.h.

arpa/inet.h(linux)

linux下inet_pton和inet_ntop這2個ip位址轉換函式,可以在將ip位址在「點分十進位制」和「整數」之間轉換。而且,這2個函式能夠處理ipv4和ipv6。算是比較新的函式了。

inet_ntop函式原型如下[將「整數」 -> 「點分十進位制」]

1

2

3

4

#include

#include

#include

constchar*inet_ntop(intaf,constvoid*src,char*dst, socklen_t cnt);

這個函式轉換網路二進位制結構到ascii型別的位址,引數的作用和inet_pton相同,只是多了乙個引數socklen_t cnt,他是所指向快取區dst的大小,避免溢位,如果快取區太小無法儲存位址的值,則返回乙個空指標,並將errno置為enospc。 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#include

#include

#include

#include

#include

intmain(intargc,char*argv)

實際執行結果如下:

192.168.0.74 : 192.168.0.74 //從這裡可以看出,printf裡的inet_ntoa(addr2)先於inet_ntoa(addr1)執行。

192.168.0.74

211.100.21.179

inet_ntoa返回乙個char *,而這個char *的空間是在inet_ntoa裡面靜態分配的,所以inet_ntoa後面的呼叫會覆蓋上一次的呼叫。第一句printf的結果只能說明在printf裡面的可變引數的求值是從右到左的,僅此而已。

inet_aton()是乙個改進的方法來將乙個字串ip位址轉換為乙個32位的網路序列ip位址。

2函式概要如下

1

2

3

標頭檔案:#include

#include

#include

完整描述:

1

intinet_aton(constchar*string,structin_addr*addr);

引數描述:

1 輸入引數string包含ascii表示的ip位址。

2 輸出引數addr是將要用新的ip位址更新的結構。

返回值:

如果這個函式成功,函式的返回值非零,如果輸入位址不正確則會返回零。使用這個函式並沒有錯誤碼存放在errno中,所以它的值會被忽略。

——————————————————————————————————————————————

1

2

3

structin_addr ;

結構體in_addr 用來表示乙個32位的ipv4位址.

in_addr_t 一般為 32位的unsigned int,其位元組順序為網路順序(network byte ordered),即該無符號整數採用大端位元組序[1]

。.其中每8位代表乙個ip位址位中的乙個數值.

例如192.168.3.144記為0xc0a80390,其中 c0 為192 ,a8 為 168, 03 為 3 , 90 為 144

列印的時候可以呼叫inet_ntoa()函式將其轉換為char *型別. 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

struct in_addr

s_un_b;//an ipv4 address formatted as four u_chars.

struct

s_un_w;//an ipv4 address formatted as two u_shorts

u_long s_addr;//an ipv4 address formatted as a u_long

} s_un;

#define s_addr s_un.s_addr

};

ip位址轉換成字串

from 從網路上接收的ip位址,有時候為了節省空間,用乙個32位無符號整形資料表示ipv4位址。我們接收到之後,又需要轉換成呢個數字和點格式的字串來進行後續的操作。比較勤奮點的人會自己寫個函式做轉換。我屬於比較懶的。不願意做別人已經做過的事情。實際上,在linux裡面,這些轉換都有系統函式完成的。...

字串轉換成整數

題目詳情 輸入乙個表示整數的字串,把該字串轉換成整數並輸出,例如輸入字串 345 則輸出整數345。請完成函式strtoint,實現字串轉換成整數的功能。友情提醒 提交 之前,請複查下你的程式,比如當給的字串是如左邊所示的時候,有考慮到麼?當然,它們各自對應的正確輸出如右邊所示 假定你是在32位系統...

字串轉換成整數

輸入乙個表示整數的字串,把該字串轉換成整數並輸出,例如輸入字串 345 則輸出整數345。需要考慮的問題 1.由於整數可能不僅僅之含有數字,還有可能以 或者 開頭,表示整數的正負。2.處理非法輸入。在使用指標之前判斷這個指標是不是為空。3.輸入的字串中可能含有不是數字的字元。4.最後乙個需要考慮的問...